We struggled/are struggling with this. My suggestion is that once he's stolen something stop thinking about how to prevent stealing and go into prevent resource guarding mode. I'd rather a dog who steals but doesn't try to maul people than a dog who rarely gets anything but when he does is extremely dangerous. Work on the stealing separately and do try your hardest to make stealing impossible when not in a training session or else the behavior will just get stronger and stronger.
Tucker will not trade if he has stolen many things, he knows trading means he looses the object, the object is super new and has lots of potential for hours of fun. He knows what to expect of food, he eats it, it's good, then it's gone. So no trading for him, at least not with food. If I were to offer him a new TOY he'd totally go for it, but I don't keep new toys stashed away so I usually can't do that.
What has worked for me in the past I grabbing a toy or sock and running away from him like a crazy person wiggling the object wildly around. He usually chases me with the stolen thing in his mouth. I let the toy I have hit him in the face (like if we were playing) as I wiggle it around and eventually the urge to grab the quickly retreating and teasing object becomes too much and he drops his stolen thing for mine. DO NOT STOP HERE. Continue running and intermittently tugging so he has a grand old time. Get near dropped stolen object and throw the toy you are playing with away from you so he runs to get it. Quickly pick up dropped stolen object and stash it in pocket or swiftly put it out of site. When dog comes back with toy continue playing for a good while, hopefully he forgets about the stolen object. Don't decrease the vigor of play, keep running around the house like a crazy person. Whatever you do don't let him see you pick up the dropped item and don't stop the game as soon as he drops it. This has worked the best for us, might not want to do it with dangerous things.
What has also worked, though not quite as well (he seems very reluctant to fall for it), has been throwing food/treats on the floor (handful at once) and stepping away, even leaving the room and peeking around a corner (since he might be suspicious of you). He'll drop the item to eat, come in a throw more food further away from the object and wait until he's busy eating to nonchalantly bend down and pick up object and hide it. Something that might work better for distraction in this scenario is breaking out a short training session right after he's done eating the food off the floor to keep his mind off of the item he dropped. This would likely be safer if he has something dangerous as you're not making him run and jump around with it in his mouth.
The risk of doing any of these things is that the more you do them the less likely it is that the dog will fall for them. This is one of the reasons you should practice really good prevention and work on some sort of training to target the stealing.
Also, take time out of every day to work on a drop it command with his toys, then use the command on his toys in an everyday situation. Eventually use it on non-doggy items (socks, sunglasses, pens, etc. you might want a leash on him the first time just in case he isn't ready and decides to bolt with the item). Once this is very solid (and not a moment before) you can use it on stolen items. My recommendation is to only use it on safe and non-valuable items so that you can repeat it multiple times. By that I mean have him drop it, reward, give item back, ask for drop it, reward, give item back, etc. Even let him have it back for a minute or two, have him drop it, reward, keep item, and give super reward like a game or going for a walk (immediately give indicator that you're doing awesome thing). If he has stolen something you really don't want him to have and so don't want to give back multiple times then I'd use one of the other two methods if you can.
Another important reminder is not to react quickly when you've noticed he has something. Nothing irritates me more than when Tucker walks in with a stolen object and mom or dad say "what do you have Tucker?". Now Tucker knows he's not allowed to and we're gonna take it. Swell. Best bet is to pretend you saw him walk in with a normal toy, glance at him and resume what you're doing for a minute so he thinks he's in the clear. If you need to go get treats or a toy do so without approaching him. Don't indicate that you care about what he has. Avoid trying to get the object from him first and then when you fail switching to the run away or throwing treats methods as he will already know what you're aiming for and may not fall for it, thus ruining the method. This is why you shouldn't use the drop it command on stolen things until you are 99% sure it'll work.
Make sure everyone in the house is on board or it won't work, I promise you that
As to how to stop stealing, I don't know, good luck. I was using a squirt bottle, no one else was so he stole when I went to bed. So it could have worked if we didn't do an awesome job of teaching him how he could avoid the squirt (waiting until I went in my room). Now our bigger problem is the cat throwing things off of table for him to eat, how the heck does one train a dog to leave things thrown down for him? Or teach a cat not to throw things down?