We found similar and worse, as some of our packages have many hundreds of versions resulting in many return trips for a single ID. It was particularly frustrating when we wanted to only refer to the very latest package version, which is a single call
with a single package response. With a very large set of packages and versions, and a lot of developers, this was bringing our internal NuGet Gallery servers to a standstill.
We have put together a really simple set of caches and resolvers that reduces this considerably, however in their current form it may be a bit hard to incorporate them directly into NuGet as you would need to explicitly modify each console command class
you wanted to use them in. We use them in a few extension commands which we have not yet released.
The code for the caches can be found here: http://github.com/BenPhegan/NuGet.Extras, however if you wanted to inject into the update command you would need to either create an extension method on
the ProjectManager or modify the ProjectManager to have another implementation of UpdatePackageReference that used both of the following:
Not sure if any of that helps or not, but at least you know its not just you!