I'm not convinced that nanoseconds precision is a good thing.
It cannot be used for the "system clock time", because System.nanoTime() returns the number of nanoseconds since some fixed but arbitrary origin time (quoting the Javadoc). So there is no way to combine it with the number of milliseconds returned by System.currentTimeMillis() or new Date().
It could be used for the "elapsed time", but I can't think why anyone would want this level of precision unless they are trying to use the Timestamper plugin for micro-benchmarking. And it is poorly suited for micro-benchmarking; the timings would be inaccurate due to the other work done by Jenkins between measurements.
I understand that you wanted to include the nanoseconds for use in anchor names, but I think this can be done in other ways. I've put some ideas into JENKINS-21208.
Just as an example: