Compass module that doesn't use I2C

Nope, its the exact opposite, its easy.

If you call a function that reads\writes data to a SPI SD card, the library automatically takes care of the device selection.

If you then call a function that reads\writes data to a SPI Radio device, the library automatically takes care of the device selection.

If you then call a function that reads\writes data to a SPI TFT display device, the library automatically takes care of the device selection.

If you then call a function that reads\writes data to a touch screen on a display device, the library automatically takes care of the device selection.