Fix mark read logic

We were assuming the cache always held (ID . DATE) cells, but it could be (ID . nil).