Why not have a second cache with DLL update times, common to all users? When indirect string gets cached, the DLL is registered there. The system monitors FS for changes to those DLLs. Then, when indirect string is taken from the cache, it's time of caching is compared to the corresponding DLL update time, and if it's different, the string's invalidated.
In this common cache instead of DLL names you might store hashes. I wonder if this still qualifies as a privacy leak.
[There are so many things wrong with this I don't know where to begin. At least two security flaws, possibly three depending on how you count. -Raymond]