Both of my little guys had this problem...and then I realized what the problem was: They would "startle" (a reflex which is normal to babies) and their hands would grab for whatever was closest...usually their faces. Both my boys also "kneaded" at their little faces (like a cat) when they were tired.
I couldn't swaddle them forever...but had to stop the scratching too!
So here is what I did: I went to Toys r us and bought my baby a stuffed doggie...pretty good sized in length (10 inches or so), but not too round. This is why a doggie is better than a teddy-bear. It's longer. The fur should be short and very soft. And you shouldn't be able to pull it out with your fingers. Make sure that there is nothing hanging off of it for baby to get tangled in or smother himself on. You might also consider washing it in Dreft (baby detergent with no fragrance) before using it so it does not cause an allergic reaction...it will spend a lot of time against baby's skin.
Anyway, once you find the perfect doggie, and have washed it, put your baby on his side in the crib and put a pillow behind his back (to keep him from rolling away from his doggie...once he gets used to it he won't need the pillow anymore). Then take the doggie and snuggle it in between his arms, right up against his chest/belly area, so he can grab at it. Prepare for sleepy bliss.
This serves a few purposes...it keeps him from rolling onto his belly, he can't scratch or rub his face, and he will feel snuggled and secure so he won't startle himself awake. They actually sleep far better this way. This was one of the things that allowed my boys to start sleeping through the night at a very early age (6-7 months). When they would awaken and cry, instead of jumping up and getting a bottle right away, I would snuggle the doggie back into their arms. Many times they'd just fall back to sleep.
Good luck to you...and I hope this helps!!!!
I know is sounds wierd...but I've done it with both of my boys and my best girlfriend has done it with both of HER boys...
Oh...as a final thought...if this works out for you, I advise buying a second doggie...that way, if baby spits up on one and it is in the wash, you have the other.