Hey Jerome,
The good news is that the AutomaticUpdater fits all of these requirements out of the box. However, you'll have to a bit of configuring.
First change the "UpdateType" property to "DownloadOnly". This way your updates will be downloaded, but not installed.
Next, the way we solve the spreading the load of checking for updates is the "DaysBetweenChecks" property. This way your servers aren't bombarded with requests each and every day. If this isn't adequate you can always create your own algorithm and manually check instead of letting the AutomaticUpdater automatically check.
Regarding the "max client" problem, you're going to need some communication between your server and the client. Namely, the server should tell the client to install the updates now (in which case your client call automaticUpdater.Install() ). Also, if the AutomaticUpdater hasn't downloaded the latest update when the server tells your app it needs to update, then you can check, download, and install the update on demand.
This should solve all of your problems.
Tell me if this helps.