You will need to set up some form of in-sketch debugging/tracking (Serial prints perhaps?) to monitor the state of various variables and possibly millis() value and compare that with your “disconnection” time to see if there is any patterns. We can’t do that here.
Your timers are overlapping every 10 and 30 seconds (AKA running two or three at the same time each time they coincide)… perhaps something they do causes a reaction over time?? Look at staggering the timers to non-coinciding timeframes.
You are also syncing your Time Input Widget function, Why? The idea of it is set and forget until set again. As the sketch should use that widgets function to take the parameters and assign them to global variables that your sketch continuously uses as needed in other timed functions.
And finally, you are using Blynk.begin(), which is a blocking command, so if something goes wrong it may stop your entire sketch from running. Look at Blynk.config()
Check this example (and search around this forum) for ways of keeping your sketch running and running proper reconnection routines if disconnections happen.