The RF22 library concept is that an interrupt from the radio (nIRQ) occurs when a valid preamble is detected then again when the receiver FIFO is almost full. The FIFO size is smaller than the max message length which is #ifdef defined at 50 or 255 bytes. When there's an error (FIFO overflow, CRC error, Invalid preamble) there's also an interrupt. So the software SPI has to be aware of these things. The interrupt pin defaults to 0, and no other devices interrupt on that pin, so it shouldn't be an issue.
On the transmit side, there's an interrupt when the FIFO is almost empty (needs refilling) and when empty / end of transmission.
There's also the clear channel assessment (CCA) interrupt - here, the receiver looks for RSSI > x, for some period of time. If a signal is present, there's an interrupt to be processed saying channel is occupied. Disable receiver, wait, try later. CCA can be disabled, at the risk of collisions, from both your own nodes, and transmissions of other devices.
It's imperative that an SPI transaction, softSPI or hardware SPI, not occur in the non-ISR level while the radio device is in a state that may yield an interrupt. For example, to read the RSSI or status register, from not within the ISR, you need to disable all (or just the radio's) interrupts, do the SPI read, reenable interrupts. I did this by just not doing SPI transactions with an active receive or transmit. To force a state change to disable the receiver, you have to disable interrupts.
If you don't do these things correctly, you'll have one of those systems that hangs every 2nd thursday.
The K20 in T3 has but one SPI port?