you need to be careful when you are talking about queue / topic, I believe topic means pub/sub and queue if for point-to-point. although I guess you mean pub/sub here, am I correct?
2.1 spec does not clearly talk about number of subscriptions, so I believe this could be JMS implementation specific. I know that WebLogic has restrictions on number but in return it introduces a set of alternatives. (see Web Login for more details, I have a link when if I find it , I will send it on)
Re the second question, it doesn't work like servlets. Calls to OnMessage are serialized by the container so no code is necessary to make the method reenterant. asynch processing of the messages of the queue are done through the management of pools of MDB.
I guess you need to revisit your archietcture a bit. again I think having a load balancer could distribute the coming messages and dispatch them among your application consumers, (MDBs). On the other hand if you also consider the container management of MDBs pooling in each cluster, you will get high availability, load balancing and scalability with this archietcture.
Let me look into my favorites to find the link to WebLogin article and I will forward it then.