I understand your remark regarding "my sketch" but the question is of more general nature.
Oh well, if we are talking generally ...
http://www.gammon.com.au/interruptsYou can "guard" code by putting noInterrupts () ... interrupts () around it.
I presume you have working the need to set the appropriate SS lines, as you say it is more-or-less working.
This could mean for example that program execution jumps to the interrupt in the middle of a Serial.println()-statement.
Virtually anywhere. Some code is already guarded to make sure that variables are accessed atomically. You may also need to do that.
Just be aware that doing X when interrupts are off will defer X until interrupts are re-enabled. Plus a timer interrupt may be queued as well. You may be reducing the window of time in which X (plus timers etc.) are done so small that you run out of time.