since there is a limit of 100 per user of the device with Geofences Monitoring
It is possible to define a zone of 5 km around me and to have only Geofences Monitoring present in this zone, to use DateTime.TicksPerMinute for DateTime.TicksPerDay and to activate and deactivate Geofences Monitoring as and when as you go forward.
You can use Location.DistanceTo (GPS library) to calculate the distance to each point.
Only add points that are close to the user. Use FusedLocationProvider to get the user location.
I assume that there will be a few points.
Set ExpirationMs to DateTime.TicksPerMinute * 60.
Schedule your app to restart every 45 minutes with StartServiceAt and update the regions.