There are two major things I see:
1. Understand "always": Always coding runs every frame. Thus, as soon as you start the coding, it will keep on going. While you are telling it to do something every n seconds... that's "ALWAYS do this every n seconds", so you are making literally infinite numbers of loops.
2. Understand the "Do every n seconds": This loop only takes in the value ONCE. Say the first time that it runs through, it gets a value of 4 seconds... then it will keep doing the loop every 4 seconds, never changing the amount of time.
Solution: Make a custom event, such as "SetMovement" (Add Event -> Advanced -> Custom Event):
At the end of "When Created":
Do AFTER (RNG from 4 to 10) seconds
Tell this to SetMovement
(New event: "SetMovement")
[Place all of the coding that was inside your "Random Number Generator" "always" code, EXCEPT the "do every n seconds" part]
At the end of that coding, add the same statement as above:
Do AFTER (RNG from 4 to 10) seconds
Tell this to SetMovement
The idea is to make a self-referencing method that will occur AFTER random times (instead of while a single random time). That should solve all of your issues at once (be sure to then delete or turn off your "RNG always" code).