It sounds like the issue is network latency excerbating a problem that you could ignore on a LAN.
How about performing a find on the payments table for ExpirationDate >= (insert the current date) then go to related records in Members, matching all records.
Another method would be to have a script modify the "current" flag in members on a daily basis. Find all memberships that expire on that day and set the flag. When a payment is made set the flag. Then the "current" flag is always up to date. Finds would be fast because you are searching on indexed field not an unstored calc.