When my Bitcoin Core 0.14.2 was syncing itself (downloading the blockchain), I saw the bottleneck was precisely in an insufficient number of other full nodes that accepted incoming connections, from where my node could download the blockchain data. As memory, processor, Internet channel, all they were busy for only 2-6%!
There is also another potential factor that you ignored. If your internet connection is somehow throttled, it would definitely be much slower. In addition, if your internet is slow, that can be a bottleneck. Bitcoin Core is also heavily reliant on the disk speed. If your read/write speeds are slow, it would also be a bottleneck.
I wouldn't pin the problem straight to the lack of nodes. You have 8 outgoing connections and the blocks are all supplied to you, if you have less than that, you can add nodes manually. I have never encountered a problem with the synchronization due to the lack of nodes, it has always been on my computers.
You compared to torrents.
OK, when I started any popular torrent on the very same computer, then the whole my 2.5-3Mb/s download bandwidth was immediately busy at 100% (ram and cpu were of course still almost free).
But if I started a rare unpopular torrent then it would be similar to syncing the blockchain as of June this year - very slow indeed
Of course. Torrent doesn't have validations that is on the level of Bitcoin Core. It would naturally be way faster. The only reason why the synchronization would be a lot slower is due to the fact that there are more transactions in the blocks that Core have to validate.
I'm completely with running a full node to support the network. But the average joe, doesn't have to.