I2C bus for real-time communication
How about implementing external interrupts on master? Imagine you have a slave device that wants to say something. It pulls a master-slave interrupt line low, a master gets an interrupt and initiates a read from that slave. You need one additional pin per slave device, of course, but it's literally the first idea that comes to mind.

Edit: nothing stops you from sending the data in such a way that you can check its integrity. You can send stuff twice or make up some control bit or something.