For our large national/mulit-national customers, we recommend controller discovery via DHCP Option 60/43 response.
This allows per-site, per-subnet granular control of the candidate controller's, the Option 43 response is an array, so we recommend populating it with the controller's closest (lowest latency first).
This discovery allows the AP to boot, so when performing upgrades in multi-hierarchies, remember to consider this when planning the array values and your normal upgrade strategy.
One of our customer's with 600+ controllers populates the arrays as follows:
1. If local controller at site with subnet, that controller is first in list, followed by lowest latency regional or central controllers....
2. If no local controller, regional controller with lowest latency first, second lowest latency second, etc., then back to main Data Center controllers