GSLB technology alone, when used for the attempted assignation of the nearest service to a given user, is inherently flawed (as you say above), as it relies on the source IP of the users DNS server, not their IP. In addition, the IP of a users DNS server may change during a session for (multiple reasons) meaning it's not terribly useful for site persistence purposes either.
-
Having location-based domains as in Jasons link above is one way around it, but the business may have reasons (not necessarily good ones) for not wanting to pollute their carefully chosen domain names for performance.
-
Using anycast for the DC endpoints is another possibility to consider for non-mobile users.
-
If those options are not palatable just accept that some users will not end up at the most optimal datacentre for them.
Whichever way - the GTM still provides an invaluable service by determining the state (UP/DOWN) of a DC before providing a response and if you are using for site persistence also, will give the majority of users persistence to a site, but you will have to work out a way to cater for the chunk of users who float sites during a session.
Just my 2c worth.....