The only thing you can do is direct his 'paddling'.
Some cats paddle, some don't. He has found a wonderful home with you and he's expressing his love, not much comfort when he's using you like a pin cushion!
Can you knit or crochet? Cats absolutely love paddling wool and will paddle that in preference to almost anything else. If you make him a blanket yourself, it will smell of you and therefore he will love it all the more. Also, he won't care if it's a great blanket or not, leave the ends out when you change colours etc, because this is more tactile and more enticing to the cat.
You may be able to direct him onto his own blanket at the end of the bed. If you can't make the blanket yourself, sleep on it for a night so it smells of you.
The other thing to try (all the time, not just when he spikes you), is when he's sat on your lap and paddling, gently hold his paw in your hand and tell him no claws, it hurts. It will take a while for him to get the message, but he will then at least attempt to miss you.
As for him letting you rub his belly, that means he trusts you completely. He can't believe his luck in finding a home and an owner like you.
If you use lots of love and patience, you will be able to reduce the amount of spikings you get, but you are unlikely to stop him from paddling completely.
Good luck and give yourself a big pat on the back for making this cat's life so enjoyable!
40 years of cat ownership, 4 cats, one incurable paddler!