kv: wait for pending RPCs to avoid ambiguous result errors
kv: wait for pending RPCs to avoid ambiguous result errors

Previously, on an unrecoverable error, we were immediately returning
an `AmbiguousResultError` if there were any still-pending RPCs in
flight, in case that pending RPC had successfully completed, unbeknownst
to the caller.

This change waits up to 500ms for any still-pending RPCs to have a
chance to complete. This is the same amount of time the caller had
already had to wait in order to have a pending RPC still in flight in
the first place.

This showed up frequently in certain benchmarks which were heavily
loading the system and also causing splits which would result in
`RangeKeyMismatchErrors`, which would then be upgraded to
`AmbiguousResultErrors` in the event that the loaded system had
allowed two RPCs to get airborne.

Fixes #13746
Fixes #13220

paperstreet/cockroach,paperstreet/cockroach,paperstreet/cockroach,paperstreet/cockroach,paperstreet/cockroach,paperstreet/cockroach,paperstreet/cockroach,paperstreet/cockroach