You might have to roll your own solution here.
Set up a four wire "bus":
1 - GND
2 - CLOCK
3 - DATA
4 - CTS
Note - you may need a terminating resistor at each end of the "network", depending on distance between the devices (I think between DATA and GND, not sure, though).
The following procedure is likely full of holes and bugs, but the idea is there (you are going to have to come up with a system; this is just for an idea of how to approach things, and -not- an actual implementation):
Each Arduino on this bus would pick a random delay time. At the end of the delay, each Arduino would check CTS; if it is HIGH, then they go into LISTEN mode; if it is LOW, then the first Arduino that sees it as LOW brings it HIGH, then bit-bangs a HELLO signal to the rest, then drops CTS to LOW.
If any others are actively listening (waiting for the CTS to go LOW), and they see the HELLO, then they would know that when CTS goes LOW, they need to randomly wait a period of time, and the first one to transmit brings it HIGH, and responds with an ACK (acknowledge), and perhaps its random ID, then drops CTS LOW.
If the others see an ACK and an ID, then they know that ID is taken, and if theirs match, they need to pick another one, and use it when they send.
Now - this scheme won't be able to tell who is connected to who, but it (well, something similar to it - as I said, the above it likely buggy as hell) will eventually work to resolve the addresses for each Arduino on the network, and other Arduinos could be connected and join in, up to some arbitrary number of devices (there are going to be electrical limits that will limit this network severely, most likely).
To connect things together, use RJ-11 and twisted-pair CAT3 phone line.
Hope this helps, or at least provides inspiration to someone...
