SI-7546 Use likely monotonic clock source for durations

System.currentTimeMillis is affected by wall-clock time, which means
things can appear to jump back in time.
Use System.nanoTime which is more likely¹ to be monotonic instead.

Really, Oracle? There was exactly one thing that mattered about this
method. Andy you managed to fuck this up?! REALLY?