When disk IO is going on a bunch of stuff in Stage 2 VBlank will almost always get skipped - part of that is the storing of Display List pointer from the shadow to real register in Antic as well as the colour registers to GTIA.
To fix is fairly simple. Straight after storing to all of the shadow registers just have a short wait like:
wait lda $14 ; low byte of RTCLOCK
You need to do that during loading for any shadow reg changes. The alternative is to store to the hardware regs as well. You'd generally do that e.g. if you were cycling a colour register continuously during the load.
For your delay - waiting for the 2nd byte of Rtclock to change will have variable delay. To ensure consistency, it's a good idea to set the low byte to 00.
Since you have that wait loop early on, you could just change it to:
wait1 lda $14