Good overview here from PaulS, but wanted to offer a few corrections on a couple details:
PaulS:
The MY value defines an address for an XBee. The DL value defines the address of the XBee that it will be talking to. An XBee can have only one DL address, so it can only talk to one other XBee.
This is correct,however worth adding that the DL address can be changed interactively, or by using API mode, you would send each transmission along with an address (try the XBee Arduino library GitHub - andrewrapp/xbee-arduino: Arduino library for communicating with XBee radios in API mode with API mode).
PaulS:
Seems like a real problem, right? Well, there is one special DL value, 0, that means broadcast mode. Broadcast sends the data to all other XBees on the PAN.
Broadcast mode is ATDL FFFF and that would indeed send data to every other XBee on the same PAN (and channel of course).
PaulS:
A perfect solution, right? Just make every XBee transmit everything, and let the Arduinos sort it out. Well, no. There is a drawback to broadcast mode, and that it that broadcast messages are low priority. It can take a while to get a broadcast message sent.
The drawback isn't exactly priority. It's that broadcast messages are not confirmed by the recipient with an 'ack' since a single message in that case would have to generate thousands of 'asks' in some cases. So the effect isn't so much a delay as it is a potential for broadcast messages to be lost if there is noise or interference during their transmission are they not transmitted multiple times. Unicast addressing does create messages that get an 'ack' and will be retransmitted with collision avoidance backoffs up to three times by default. So your message is much more likely to get through, even in noisy environments.
PaulS:
The way to handle the paradox is to have the master use broadcast mode to request data from a specific Arduino. The master XBee broadcasts a request for data ("Hey, Joe, talk to me"). All the XBees get the request, and pass it on to the Arduinos. Only one Arduino knows that it is "Joe", so only it prepares a reply, and passes it to its XBee to send, directed to the Master's DL. The other Arduinos know that they are not "Joe", so they do nothing about the incoming request.
This will work, and you should also have an error correction routine. In case you don't hear back from the Arduino that you're talking to, the transmitter should create the request again because in broadcast mode you need to expect more transmission failures and handle them using your own communication routines.
Good luck with the project!!