Keep all transaction caches still referenced
The LRUDict is replaced by a WeakValueDictionary to keep all used transaction caches such as they can be cleared by ModelStorage. But we still keep the latest cache used so they are not removed from the WeakValueDictionary too soon when such cache has been created to be pre-filled like in ModelSQL.search.
Closes #12119 (closed)