Why do you want to use both the spi and usart for the same thing? You can have a number of slaves on the one spi master, but they must have individual slave selects.
uint8_t SPI(uint8_t cData) { /* Start transmission */ SPDR = cData; /* Wait for transmission complete */ while(!(SPSR & (1<<SPIF))); return SPDR; }
SPI needs to send a byte to receive a byte, so you really only need one function.
‘bit shift‘ is not quite the right term. Basically if you want to talk to device #1, make it‘s SS pin low. Make it high when finished. Similarly for device #2, make it‘s SS pin low when you want to talk to it. High when finished.
Regarding SPI and USART - the SPDR register is NOT shared. The USART has it‘s own registers.