Keep needs_update() from hitting the shelf

Keep a timestamp in memory instead of just in the shelf itself.

Also fixes the high CPU usage introduced in the previous commit.