According to the adafruit driver's code, it is capable of loading and storing fingerprint templates (256byte each) from and to its flash
uint8_t emptyDatabase(void);
uint8_t storeModel(uint16_t id);
uint8_t loadModel(uint16_t id);
uint8_t getModel(void);
These functions would allow you to sync the local database of each device with a server for example or even download and test for each template individually, which would obviously be pretty slow and only viable, if you had to store more templates than the flash itself can.
You can encrypt this data before transmitting in whatever way you wish but that is a topic on its own.
Other than that your components seem to be compatible.
An idea for syncing:
Every unit should check on a fixed interval of 1 second for instance, whether the online database has changed. This may be represented by a simple counter i.e. version that increments with each change and is copied to local storage after downloading the latest changes.
So whenever an Arduino uploads a new fingerprint model or your mobile app removes a fingerprint, the counter on the server is incremented and every other device knows to update its database in case the local version is lower.
Another tip if changes happen very frequently:
Every flash memory just has so many write cycles before it dies. If you happen to update the database a lot, you should try to minimize the stress on each fingerprint sensor's memory by assigning an arbitrary, unique id to each fingerprint and storing a local 'map' where you have stored which id on this specific device. This way you can update only the fingerprint(s) that have actually changed.
Good luck.