you can create multiple virtual IPs. The IP a client is talking to (VIP A or VIP B) should be available in the Proxy.IP property. So you can create two VIPs and two sets of next-hop-proxies (Set A - Use HQ, if it fails use DR and Set B - Use DR, if it fails use HQ). Then you say something like:
If Proxy.IP equals VIP A Then Enable Next Hop Proxy (Set A) - Stop Ruleset
If Proxy.IP equals VIP B Then Enable Next Hop Proxy (Set B) - Stop Ruleset
This should do the trick.