When I worked in an Architecture firm of 50 people, we gave up "upgrading". The time it took me to do incremental upgrades (usually just RAM and new GPUs) would be a substantial fraction of the total cost to upgrade, and every minute was time lost to supporting staff in the work that needed to be done. And, after the upgrade the entire rest of the machine was still a few years old, with a higher potential for failures in the hard drives, PSUs, etc. We couldn't afford to keep many extra machines in a closet "just in case", and a failed machine was often a lost day at least, sometimes more, for people on deadlines, even when you had a hot spare. This is because software and updates need to be brought up to current spec, and that was half a day all by itself.
We did a detailed analysis and found that buying new machines for the Architects every 3 years, then trickling down the best of the old machines to Project Managers, Admin and Management, was by far the best approach. The rest of the machines got donated to local schools for a tax write-off. It minimized staff downtime, maximized staff effectiveness, and improved staff morale when they got brand new machines on a regular basis. The only deal killer is non upgradable RAM, because you might buy 50 machines with 32GB, then get a massive project where the team genuinely needs 64GB. In that case I add the RAM for the duration of the project, then pull it again so it's available for the next team that needs it. That and de-dusting was the only reason to ever get into a case.