Thanks for all the replies. Will test out each method to determine what works best for my project.
Ramones, the custom movement bullet example you provided seems to work well, but I have one issue. On collision I have functions being called in actions depending on the object the bullets are colliding with.
Now that I'm using the is overlapping event (instead of on collision), I find that my functions are being called multiple times instead of just once as required, I guess because of the increased accuracy.
The "stop custom movement stepping" is my first action on overlap (as per your example) before calling my function. Is there any way to execute my functions just once when the is overlapping condition is true - for many ticks?