Add randomness to exponential backoff

Exponential backoff requires an element of randomness in the retry
times, or else collisions from multiple parties risk falling on the same
time boundaries. The current exponential backoff scheme, for example,
may have two parties retry at 0.1 seconds, then both retry at 0.2
seconds, etc. In this narrow condition there is no additional benefit to
using the current exponential backoff scheme.

This fix adds the appropriate randomness. For more information see:

http://en.wikipedia.org/wiki/Exponential_backoff