Rather than failing every time we fail to update (breaking most usage
while offline) instead only fail if we cannot obtain the JSON and we
don't have a valid local file we can use.
Also tweak the timeout and retry logic and values to make a bit more
sense in this context and not be so noisy when offline.