After spending some time looking into how to build this different representation on top of the existing lighting storage (and then realizing how much effort it would be to convert this format back into the octree), I decided to just bite the bullet and change the actual storage representation for lighting and logic to use this "inflated pseudo-octree" approach.
While it means a change to storage and network protocol, the code change is actually relatively small and immediately resulted in a massive win in the stress test's performance (went from constant log spam about late ticks into no more than any other test).
If this were already a shipping product, this kind of permanent and wire data format change would have been a concern (and require storage migration - which wouldn't have been too bad), these are just pre-releases so the on-disk format isn't yet being formally supported. The storage and network are versioned, but that is just to fail early in a more meaningful way.
So, this now means that I need to find another stress test to see what other issues could come about. Maybe it is time to reduce the tick time to see if that is stable (and I am sure that there are timing assumptions which will need to be flushed out).
Maybe the next stress test is just to see what happens when lots of clients (hundreds) connect and start performing basic actions. It shouldn't be too hard to put that together, given that the lighting test already required that I build the required primitive testing elements.
I didn't want to make that kind of change but I think it was worth it,
Jeff.