Reduce disk I/O when checking isCached
This is a low-cost best-effort strategy that triest to reduce as much
as possible the need for I/O to check if something is cached. A file
name we've never seen can just be skipped immediately. Something that
got added and was removed later would still end up hitting the disk to
figure that out, but that's not different from before.
Unsure about the exact multi-threading semantics of that Set though,
we might need to do some king of synchronization