Yeah, I think it just wipes all custom fields. I'll need to add an option to control which custom fields it wipes (or doesn't wipe) as determining what is "viewable" is frankly tricky.
You do not want to save the entire entity when caching.
The common practice is to cache the list of ids and then do a fetch on those ids and allow XF to filter results based on permissions. This ensures that even if the content is moved or removed you do not show out of date content.
If you...
@smallwheels please keep the combative posting to elsewhere. These support threads are hard enough to follow as it is :(
This feature was commissioned by a client, so it probably isn't applicable for everyone.