Check out the source code for icommand.nxt.comm.NXTCommBluecove. There's a method in there called search() that returns all the NXT bricks it finds in the vicinity. Theoretically you could use this info to determine which brick you wanted to talk to.
Also, NXTCommand has a method called getSingleton() which returns an instance of NXTCommand, so you can send LCP (Lego Communication Protocol) commands to the brick. If you wanted to control more than one brick simultaneously in one instance of an iCommand program, you would have to expand this so you could get the appropriate instance for each brick you have.
The architecture is a bit of a Frankenstein's monster because of the way it evolved, but it should be easy to modify to your needs. If it works out, let us know and we'll add the code to the project. Keep in mind we want this to work with one brick with no additional hassle for the end user. So if your modifications make extra work for users with one brick, you should rethink the architecture.