I think your problem is tougher than the traditional problem due to the radius being variable.
See http://mysql.rjweb.org/doc.php/find_nearest_in_mysql for discussion.
That lists 5 ways to "find the nearest X". The simplest, but slowest, is check every item for its distance. All the rest are faster because of using a "bounding-box" to limit how many items need to be checked. However, the coding gets complex.
A bounding-box, in your case, could be limited to the maximum radius in the table. Your sample data show radii of up to 8, so building a square of side 2*8 around the starting point would let you feed into the various techniques I describe.
The simplest involves INDEX(lat, lng), INDEX(lng, lat)
to let the Optimizer pick which is better. The advantage is that it checks only items in a 16-wide band of latitude (or longitude), not the entire globe. The disadvantage is that it does not do much to optimize the other direction.
I suggest you use that technique as a first cut. If you need more performance then read further in my document and, optimally, come back for more help,
The techniques discussed there also allow for limiting the number of returned values.