Don't use the while loop method to find points within a radius. Instead, estimate the distance in km between grid cells at the start point, and use that to search only a single box for points within the radius. The accuracy of this approach will diminish with very large radii.