I found this topic while wondering why
testnet4 is mining empty blocks: there are thousands of transactions waiting, and the last 14 blocks were empty. Before that, 2.5 full blocks, before that, 30+ empty blocks.
I don't want to post on Google groups for this, so I'll post it here: how about cutting the difficulty in half instead of dropping it to 1 after 20 minutes? That will quickly solve the problem if the difficulty is too high, and a large miner stops. But it also disables CPU mining: if the difficulty drops by a factor 8 in an hour without blocks, it takes many hours to reach 1.
Update:

I've spoke with the guy that is mining like this.
I asked him why and he said:
I then let him know that he's about to have a Customer Support job letting people know why their Testnet 4 hasn't confirmed and he said:
Re: Your transaction will get sufficient confirmations when I'll allow it.

Basically, if the code allows for any mining fuckery, someone is going to hit it. If you divide it by 1/2 then you can multiple the fuckery by at least 2 or more.
A friendly quote for people upset about testnet being tested from the miner:
it's a testnet network, remember? 🤣