How to disable arduino Hardware Serial Rx Interrupt Properly
The standard way to deal with a problem like you have is to simply use the global interrupt disable and enable. Since you already know that the UART interrupt can corrupt your SPI transaction then you should be prepared for the fact that any interrupt could corrupt the SPI transaction. 

The only general case where you would not use the global interrupt disable/enable is if you were also using interrupts to support the SPI transactions. This is not the final answer to every situation because there are surely specialty applications where complex handling of interrupts allows/disallows/priorities need to be dealt with. However your case does not look to be that type of situation. 

When using global interrupt enable and disables in a programming context where they may or may not be enabled when a particular piece of code is called with a critical section then it is necessary to preserve the existing state of the global interrupt system after the critical state. In this case the proper method of handling critical sections of code is to use a code sequence like the following pseudo code:


Push interrupt state flag to CPU stack
Disable global interrupts
Critical section of code starts
....
Critical section of code ends
Restore interrupt flag state from CPU stack


Manipulating the interrupt enable flag like this usually needs to be done in the CPU assembly language. C compilers often provide a means to invoke the necessary assembly code or have built in macros for doing this operation.