Is it possible to use iPhone's hardware vibrate button to toggle "silent" / "vibrate only" instead?
You could set your phone up to vibrate on silent and then configure your sounds to be short silent ringtones. Then when your phone is in "normal" mode it will play the silent alerts (The Sounds of silence... Yeah shouldn't try singing) instead of ringing.

Unfortunately you'd have to set multiple alert sounds (SMS/iMessage, Ringer, etc.) but here's a link to a step by step plus sample ringtones: http://www.iphonefaq.org/archives/971156