fix: check expiration on in-memory cache hits in ResultStore._read/_aread
ResultStore._read() and _aread() returned results from the in-memory
LRU cache without checking metadata.expiration, serving stale results
after TTL elapsed. Now both methods validate expiration before returning
cached entries, evicting expired records and falling through to storage.
Fixes OSS-7655
Co-Authored-By: alex.s <ajstreed1@gmail.com>