[#76062972] Reduce reliance on `time.Sleep` for tests

Where possible we should use the asynchronous constructs provided by
our testing utilities (ginkgo and gomega).

The majority of tests have been converted to use these new matchers.
The only test that hasn't been converted is one that relies on
timings (TCP reconnection in Redis) where an internal goroutine's
behaviour (read: delay) is time-based.
Amended in 017417b.