This is the part where not having persistent directories bites B2. On a normal backend, rclone would have created the directories already and these would be on the remote. But they aren't found here.
So I think you've confirmed it is the B2 directories issue.
I've had a go at fixing this.
When adding a Virtual on a backend which can't have empty directories, if the directory isn't found then rclone will create it and all of its parents.
There is quite a lot of new code here so it might not work properly and it needs tests for the new code, but I thought I'd let you have a go first to see if it works.
This should emit a new DEBUG Creating parent of virtual directory since backend can't have empty directories
Holy cow. It's working! I think this was the final fix for the entire concept of "infinite B2 disk with local cache", after all the years of your work towards this. I have only just mounted it, and haven't tested doing practical things like viewing video files, but everything did show up from cache!
(And yes, the DEBUG Creating parent statements were showing up during mounting.)
Is it normal? (These dirs/files exist on B2, so I assume this is just some kind of standard maintenance.)
Another thing: since I never intend to update B2 directly outside of using this htpc, can I just disable dir cache time limit? I think rc vfs/refresh on load will always refresh the dirs, so I can remount or call this command if anything? /cc @Animosity022