Выясняя сколько времени занимает System.currentTimeMillis() нашел интересную статью с замерами производительности.

Оказывается, что если вам повезет, то получение текущего времени занимает несколько наносекунд и является чтением 3 слов из памяти, что работает очень быстро. Также, забавен факт, что получение времени обходится дешевле промаха мимо L3 кэша, который отнимает 100 наносекунд.

В целом получение времени обходится практически бесплатно, что на много порядков дешевле чем я думал.