I managed to have my wallet synced around the time you asked the question, running on a dedicated home server. Then I forgot to run geth for some hours after a power failure, and I was ~3000 blocks behind. Over the next 2 weeks, the "blocks left" in the UI has been varying, as low as 1200 up to about 4000.
Then a few days ago I upgraded to 1.8.0 and the following day to 1.8.1 of geth, and it has since slowed down significantly and I am now 7800 blocks behind.
My conclusion is; Either geth is a piece of junk and should not be used (I have not seen anything significantly better), OR (perhaps more likely) Ethereum has such major design flaw that it is doomed to succeed. If a high-ish end, Ethereum-dedicated home server can not catch up, then there is no future in Ethereum or any block-chain with similar traits.
The fact that the server spends 45% waiting on I/O, and that 10s of TB has been written to the file system, tells me that
a. it is most likely that the developers don't know what they are doing,
b. that even SSDs are not really a solution, as the writes will wear them down too quickly.
I have spent far too much money and far too much effort trying to get this to work. "Proof-of-Work" has suddenly a different meaning!
I have also no clue why there is so little responses on this, why this is not the most important topic to discuss in Ethereum and that every single person involved spend all there effort trying to solve it, UNLESS it is deemed unsolvable and it is now a matter of them making a smooth exit. Who knows?
In any event, I am not a happy camper and I am certain that there are many people like me.