It wouldn't work. If the PoW for transactions was SHA256d, you could just buy an ASIC and spam transactions. If it were something else, you can use GPUs and it would be just as effective. Making the difficulty adjust to transaction size would be completely pointless since spam transactions are typically not large. Furthermore, you couldn't just make it based on the person who is sending it since Bitcoin does not use an accounts based system. It is difficult (nearly impossible) to know whether two transactions were created by the same person, so you can't make the difficulty adjust to the person. So this idea of adding a PoW to each transaction is pointless and wouldn't reduce anything, at least with Bitcoin's design and security model.
Do I understand correctly that you mean spam transactions no longer exist in the mempool as they once did to crowd the bottom of the TX fee levels, and that the occasional surges in unconfirmed TX seen in the mempool over the last 12 months are all 'end user' transactions?
I'm not proposing that individual people would have to submit PoW, but instead that individual transactions would. Thus, a single transaction with many hundreds of outputs or inputs would require a relatively large PoW, but a transaction where the entire balance of one address is transferred to another address would not. (This has been my working definition of spam: transactions of the former type rather than the latter.)