Unfortunately Call Manager by design is restricted on this part
i.e. we can only configure Directory on one Node and hence if this node fails the Directory goes down.
What can be done is, on Call Manager, one can configure the Corporate directory service using a host name instead of an IP address, then on your DNS server, you can configure entries for all subscriber nodes, but with the same exact host name.
This way, when you invoke the service by host name, all corresponding IP addresses can respond and be tried one by one with the drawback of having to wait for significant timeouts if one of those nodes actually fail.
A DNS record should be configured for each subscriber node with the same fully qualified domain name (FQDN) or host name so that a DNS query for the FQDN
or host name will return IP addresses for multiple Unified CM subscriber nodes.
Thus, a phone querying the DNS server for the FQDN or host name will receive multiple IP addresses.
Given a node failure, these IP addresses can be contacted one at a time in turn until a responding node is found.
It's not really something you configure at the CallManager side but rather on your DNS server, and server Load Balance is still the better of the two alternatives.
You may contact me on email@example.com for further information on this or contact Cisco TAC