I'm not sure how hard it is to load VFileSystem009 from a plugin but IFileSystem in public/FileSystem.h has a FileExists method. I'm not sure how LoadFileForMe works but I imagine the buffer has a long life, and I believe it memory maps the file.
I think there are callbacks for when a player connects in the engine? Which one are you using to check? ClientConnect or something else in DLL_FUNCTIONS should hopefully let you hook the player joining a game.
I think strings allocated by ALLOC_STRING last as long as the engine is running but I don't believe it's smart enough to check for already allocated strings.