I have around 3500 geographical points of interest in an area of 9000 km^2, and I want my app to run in the background and notify the user whenever he or she is in proximity
I think there is a limit of 100 geofences. I am not sure if this is per application or per application per user. I have not test this idea, but can you register the first 100 locations closest to your location?
I'd recommend downloading all points to a sqlite db on the device. Then find the closest 99 points with something like this: SQlite Getting nearest locations (with latitude and longitude) and register those points with Android to monitor.
Then set a "significant change" geofence that you can use to monitor if the user's location has changed enough that when they exit this geofence, you should reload the closest points of interest.