The problem -- I think -- is that I need to more aggressively sort cells that have been tentatively calculated to higher positions on the list so that they are guaranteed to be above any cell that depends on them. Right now, they may be calculated but below a cell that depends on them, which produces artifacts when looping. I can get rid of the artifacts via brute force, but the brute force approach is expensive for large lists, so I'd rather try a bit more finesse.
(If it were possible to trivially conclude that cell A is either above or below cell B in the list, that would make life simple, but that's not something that can be done without substantial maintenance of ordering information which is even more expensive. I considered a split-the-difference approach with ordered floating point values, but I would end up with all my cells with wonky values between 0 and 1. :) )
In any case, it is time to go to the swimming pool now... :)