Are SPI or I2C timer interrupt based protocols?

I think so.
If you use

SPDR = dataToTransfer[x];

then I think it may not interrupt at all, and will instead rely on your Timer1 code to not start another transfer prior to one completing.
Kinda guessing. Do you have an oscilloscope to monitor pulses while the LCD updates happen to confirm?