I did some tests with I2C but it wasn't fast enough for the application I had in mind.
low resolution large sensor array
I think your idea of the masters polling the SS line is good. Use 2 pins to do it tho - one that is the SS output, have it drive an open collector driver that goes low out to the slave, and connect the open collector output to another input that you poll to see if it is free.The open collector can just be a simple NPN transistor, drive the base high, pullup resistor for the high signal. You will then drive SS high from the Arduino to start your transmission, and low to end, the slave will see that as the regular low & high.Then you will not have to switch modes on the pin to see if the line is free. Either use a good fast transistor, or an IC equivalent such as 74LS06http://focus.ti.com/lit/ds/symlink/sn74ls06.pdfAs to how to keep more than one master from starting at the same time- can the masters talk to each other directly?Then you could make a ring of comm's - 1 pulls SS low to start, and is connected to 2, pulling a line low to let 2 know it has started and stopped. 2 does the same to 3, which does the same to 4, etc, all way around until 10 gets back to 1 to start the process over. And maybe that line is just the pre-buffered SS line. On power up, all would have to wait until 1 was ready to go to begin.How far apart are the masters and slave?
ARD1 ARD2Master Master \ / +----------+ +- IOExp | +- /23s17 | +- /etc | / \ARD3 ARD4Master Master