Mahendra-
Looks like you are not seeing too many bites on loadbalancing JMS. I went on a bit of a reading binge to find out what JMS does to communicate.
I found this regaurding loadbalacing it: http://docs.oracle.com/cd/E19182-01/821-1065/ghhhx/index.html
It is about loadbalancing using a java machine, but the interesting part is that the endpoints have a single databased they sync to for the queue.
It would seem to me that clients would need to always go to the same server if you didn't have a queue (maybe use a hash based predictor or sticky on L3).
Some protocols do not like being natted. Did you try just 1 server in a farm? Did that work?
Regards,
Chris Higgins