In short, Bubble has a safety mechanism in place to prevent repetitive actions from firing in a short period of time.
Bubble tries to be smart about executing workflows repeatedly. As a result, any actions that make sense to repeat (like making changes to your database) will repeat, and any actions that don't make sense to repeat (navigating to another page) should not be repeated.
The workaround here to is to force Bubble logic to only run once. You can do this by adding a "pristine" custom state on buttons and adding an "only when" condition to click workflows to only run if the button is pristine.
For more information on custom states, check out our manual entry here.