Unable to Stop Looped Function Consistently

I don’t see how, as your code contains no loop that will re-trigger the rotation once your *Run() functions have completed - unless of course you are using a widget on a Push interval (not the way to do this).

You can’t use delays with Blynk.
Blynk requires constant communication between the device and the server. For this to happen, Blynk.run() - which is in your void loop - needs to be processed every few milliseconds.
Using delay() blocks all code execution for the duration of the delay, so Blynk.run doesn’t get executed for the duration of the delay.
This makes the device unresponsive to widget button presses, and will lead to disconnections from the Blynk server.

You probably need to use interval timers and a flag to trigger your repeated rotation, but may need to use some interval timers as well. It’s difficult to say without understanding more about the goal of the overall project and how you are driving your motors.

If you want to learn more about how to use timers then read this:

Pete.