Main goal here is to have better specificity using cache keys, to avoid same memroy address being re-used messing up with cache pointers restoration after undo had to re-read a data-block. Once all caches handling are ported to this new system, it should fix random issues like the one reported in T76989. Part of D8183, refactoring how we preserve caches across undo steps in readfile code.