CPU and net usage stay low most of the time, problem is not there (most likely). HDD usage is constant, I think that's probably the bottleneck. It's a 7200rpm standard desktop HDD.
You have 2 bottlenecks: RAM, and HDD speed. Both are more or less interchangeable: with 32 GB RAM and 12000 MB
dbcache, your sync will go just fine. With 8 GB RAM and an SSD, the SSD is still the bottleneck. I tested both of these examples myself.
10 years ago I could sync the blockchain on a slow 5400rpm laptop HDD without major issues.
Ten years ago, the entire blockchain was only
20 GB.
Does syncing get harder over time as the blockchain gets longer?
Yes. The
chainstate directory keeps growing, and requires more and more RAM (or a LOT of disk activity) to verify the download.
Or has the code quality of Bitcoin Core gone down?
Nope. Older versions were much slower to sync.
Syncing monero is also extremely slow and it has been so as long as I can remember. But that's another story.
Monero is even more demanding than Bitcoin Core, despite a much smaller blockchain.
TL;DR: get an SSD.
If you have a small SSD, put the
chainstate directory on it. That will make a huge difference for Bitcoin Core. If you don't have an SSD yet, buy one. Get a decent one for best performance. It's going to largely improve your entire computing experience.