Workers will now retry (but not re-resolve) on some ExecuteFetch failures

@enisoc @alainjobart 

First pass at retrying for errors.  Wanted to get your thoughts on this approach - still need to add re-resolving, but I think it should be straight-forward with this approach.

Existing tests pass, but nothing is explicitly testing tablets temporarily going away. I'd like to add something to our test suite along those lines (maybe vtctl Pause/Resume commands, or maybe just easy ways for disabling and enabling queryservice).
I was the one who recommended the non-blocking select as a general pattern for checking Done channels. Without it, the single select-loop pattern is basically nondeterministic wrt the Done channel. In practice it's unlikely to matter, so if you think it's not worth it then I'm ok dropping it.