There is still one issue left with virtual blocks calculations, and that is when the blocks are not set in the world before a calculation occurs. what this does is that in some instances it causes a calculation to occur where there are 0 block changes, and this creates a loop because the calculation is never marked off as complete.
I believe block change events can be used to solve the first issue - the command should only be ran once all of the existing virtual blocks have been placed on the world.
The second is more difficult if there is indeed not supposed to be any block changes.