fix #653, overuse of Redis KEYS in mirror

This is a bit speculative, I think it should still do the right thing if the lists expire while they're in the middle of being processed (which was also possible with the previous code, of course). @jessereynolds, I'll need your review and signoff before merging, as you may see problems I didn't with this approach.
It's refreshed from the actual archive keys every time the mirror starts, and an expired key will just return size 0 and be skipped above. It's not optimal, but expiry asynchronous to the actual processing is a bit hard to handle.

Maybe we should do the refresh every time a missing value (i.e. size 0) is found in the cache? May be more than necessary, but it's got to be better than once per second :)