If all 3 gateways are configured in agent's policy then agent will randomly select a gateway and if that gateway is available it will try to use it for as long as possible.
When connection to a gateway is lost the agent will try switching to another one, the lost gateway will get into the "bad gateway" list temporarily.
Each gateway has list of the associated NS-es, you should add NS-es using Internet Gateway Manger UI on each gateway machine, a gateway can only forward calls to NS-s it is aware of.
So if each of your gateways is aware of every NS in hierarchy, then any agent will be able to connecte to any NS via any gateway.
Hoope that helps.
How many clients are there?