Please note that a SNES Classic is not real hardware, it's just a well disguised emulator.
The first issue is caused by VBlank code overflowing into the next frame. This means that your hacks do more stuff during VBlank (such as uploading graphics).
The second issue is caused by main game code overflowing into VBlank, thus skipping running anything for the next frame. This means that your hacks do more stuff during the frame (such as updating sprites).
So basically your hacks do more stuff than the SNES can handle. They work fine is ZSNES because ZSNES is a very bad emulator and got the timings wrong. Only testing your hack on ZSNES is a bad idea because of issues like these (although if you made your hacks a really long time ago then you might not have had any better alternatives available).
Really the only way to fix the issues is to optimize your code. That might be hard if you didn't write the code though.