Store Duration as u64 nanoseconds
This shrinks the size of storage from 16 bytes to 8, reducing memory
usage from 4.65 GB to 3 GB.
This preserves precision and accuracy -- we never have large enough times to
fill up 2^64 nanoseconds. We may want to explore going further, by storing in a
(u16, u16) (and splitting up into nanoseconds/seconds or so). But that's more
complicated, and this gets us pretty major wins as is.