Onscreen would probably just limit to the already established cell collision. If not it would still brute force.
As for distance() i'm 90% that would still run on only brute force as distance isn't part of cell collision.
"It is rarely true that logic can only be coded one way"
True, but I suspect this is based on archetictual limits. Requireing some changes would probably require some fundamental low level changes which could have some serious repurcussions.
but I agree, being able to the cell object list and *cough* cell resize would be great :)