Selfish mining is where miners hold back their blocks and then quickly broadcast them once someone else finds a block. A selfish miner is assumed to have a really good network connection. They can detect the other miner finding a block and then get their block (which they were withholding) to most of the mining power faster than the other miner.
Thank you for correcting me, my mistake for using the wrong terminology.
From what I could gather the reason miners do SPV mining, and as you addressed in your solution, is because they haven't downloaded the entirety of the previous block and as such don't know which transactions are still unmined.
I think that the original proposal will still be doomed to fail even for ASIC prevention as miners could simply add in their own transactions with either OP_RETURN or something similar and use that as a nonce field.