This might be useful for NavigationTiming in general. Let's start doing this with just one metric, like loadEventEnd. During a session we store it for the last N pageviews (time + value), then if the current pageview is sampled for NavigationTiming, send the data.
I think we could store this in a session cookie, this way it's ephemeral and not adding clutter like localStorage would.
As for time, I need to check if performance.now() works across pageviews. Otherwise it might have to be server-side time.