I really find myself buying shit just to feel like he's not the only one getting treats!
If you reorganise how your finances are managed, then the money you would have spent on buying crap to even things up you can instead put into savings in your own name.
You need a joint current account, a current account each, and a savings account for yourself. He can also have a savings account - that is up to him.
There are two basic options: you either have all income paid into the joint and then transfer an amount into each of your current accounts after the bills and shopping are paid, or alternatively you both get income paid into your personal accounts and agree how much you each need to pay into the joint account.
In the joint current account, keep an absolute minimum, enough to cover all the direct debits at the start of the month and do a big shop for the month. Just enough for weekly top ups of fresh food is all you need to have in there after the first few days of the month. If he want to spend it, you say "No, X is for a top up shop next week and X for the next two weeks after, so there is none to spare".
Consider not having joint savings, or keep them to a minimum and tell him specifically what they are for: 'the money in the joint savings is £X hundred for the car's next MOT, X for our holiday, X for Christmas, so no, you can't have any of it because there is none to spare".
Never, ever give him money from your personal current or savings accounts. He is transferred each month the same money as you, and if he chooses to spend instead of save, that is nothing to do with you.
When it comes to treating your adult offspring, you just have to accept that it is you who will be paying, because he is a selfish spendthrift. That is your choice, if you want to spend your money on them.