My question is; is there a level of sleep mode that keeps the SPI and 3.3v alive so that the RFID will always work and will power up the system?
The 3V3 is always available as the on-board voltage regulator is not controlled by the CPU.
In idle sleep mode SPI clock is still active but I cannot see how that will help you as to read the RFID reader you have to run code which is not possible by definition in sleep mode.
BTW, awaking the system from sleep is not the same as powering up. I hope you see the difference.
I also want to power up the mega with the serial bus via bluetooth as an OR’d function with the RFID input so that either RFID or bluetooth can power it up. What sleep mode would work for that?
You can wake up a sleeping Arduino by the serial interface only in idle sleep mode.
You might use a pin change interrupt to register any activity on the serial interface but you probably loose the first byte or so if you set it up this way.
Why do you want to put the Arduino to sleep?