Oh boy! I, too, had a daughter who was addicted to swaddling, and I held on to it for as long as I could, wrapping her more and more tightly. But she almost always found a way to get out. She also STOPPED sleeping through the night (7 or 8 hour stretches), and I thought she had gas or was having a growth spurt. In hindsight, I know she was just ready to stretch out and sleep unbound. Right about the time she started sleeping poorly, we were in the midst of a cross-country move. Once we got settled and got her room set up, we pretty much went cold turkey. Additionally, we did CIO at that time, just wanting to nip it all in the bud. (I should also mention that she had been sleeping in her car seat also because of acid reflux, and we started putting her down in her crib.) Needless to say, it was a pretty big change for her. We had tried the one arm out thing, but it really didn't do any good. So we just got rid of it altogether. We suffered through about 4 nights of crying, and then she slept really well, and still (for the most part unless she is teething or has a tummy ache) does.
I think 3 months is probably too young for CIO, but I would just go cold turkey on the swaddling. It will probably suck for a few nights, but then it will be fine. Or you could try it with naps for a week then move to nighttime. Make sure his fingernails are trimmed so he doesn't scratch himself.
If that doesn't work, I have also heard of a transitional wearable blanket made in the Netherlands, i think, that keeps their arms and hands covered, but not bound. We didn't use this, but i've heard good things about it. We did (and still do) use a sleep sack, though.