CacheKey ... they are designed as Properties and not as fields, so new ones should be created every time.
Thank you pointing this out that the CacheKey is designed to be Property and that a new one should be created every time! That explains everything!!!
Actually I didn't noticed this during the upgrade and in one of our plugins I made the CacheKey to be fields:
public static readonly CacheKey CacheKey = new CacheKey(...);
This explains why I got this problem.
Now when I changed the filed to be a property I no longer have this problem.
Please note that the problem still remains when you don't use a property and I am sure many developers will not notice that the CacheKey should be a property and a new one should be created every time (just like me) and they will end up with some very very strange problems with the caching. Since there is nothing to prevent us from making the CacheKey to be a field I think this is a design problem.
I personally thought that FillCacheKey will always create a new CacheKey rather than return this and it looked a bit strange to me but I was in a hurry and didn't pay too much attention to how you have implemented the CacheKeys exactly in your code.
Thank you for your time!