You are right, it is a timer issue. Generating video requires precision and takes up a lot of the microcontroller’s time. For example, to do serial communication, the pollserial library performs serial communication with polling instead of interrupts. The use of the pollserial library occurs during the horizontal blanking interval.
You may try pollserial for communication with another Arduino. The other Arduino can just use regular normal Serial library.
Or you can disable the video generation temporarily while you do i2c, then re-enable it, if your communication is infrequent. Just some ideas.