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.

¹ See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6458294
  "nanoTime affected by system clock change on Linux (RH9) or in
   general lacks monotonicity".
Merge pull request #3266 from soc/SI-7546

SI-7546 Use likely monotonic clock source for durations