Maybe I misunderstand how "subnet distance" is supposed to work? For example, say that in your situation:
Repo1 is in Seattle, WA
Repo2 is in Australia
Repo3 is in San Jose, CA
If Repo1 goes down, then using "subnet distance" your client will update from Australia instead of San Jose, correct?
However, if you use "ping time" then the client should update from San Jose, right?