Assuming your 16 Rpis run unattended and that you already deployed on each a watchdog sw/function that launches your client program if it's not already running, may I suggest to name one of those Rpis (or any other PC always on, even outside the LAN) as the "software distribution server"?
Then all the Rpis (via a config file) will connect to a webserver running on the SDS server, verify if there is a newer realease of their running sw, rename current version to *.old, download the newer version and halt. Once the watchdog finds the sw is not running it will launch it, but this time it will launch the newer realease.
Fundamentally any of your RPi sw should have a "check for newer release" function embedded and called at start.
Note: the above system will work indipendently of how many devices and different softwares you use.