Seaching points within a radius - performance issues
Question 1:  The temp table and filesort are unavoidable; don't worry about it.

Question 2:  Let's remove the JOIN... and change AND status=1 into

AND EXISTS ( SELECT * FROM users
                WHERE uid = userprofile.uid
                  AND status = 1 )


(I assume uid is the PRIMARY KEY of users?)

In theory this will delay force the test for status until after the Spatial test.