I've had this happen to me (and been late for work) just enough to now use a regular alarm clock -- it's actually a dock for my iPhone for which there's an app that lets me program the alarm (and radio stations). The dock's alarm functionality works independently of my iPhone, and works whether the device is docked or not. Using the app to set it when docked is just for convenience, it works fine without it.
You mention considering some other alarm app instead of the native one. That's an even less reliable option as either the app has to be running, or it uses Notifications -- which will only sound an alarm briefly.
I ran into the issue with both my 4 & 4S -- and researched it at the time, there's a lot about it at the Apple forums. While there is no definitive word from Apple about the issue, what it seems to boil down to are incoming notifications. If one happens to come in while the Alarm is going off, it'll silence it. I tested it using Google Voice from my PC to send a text message to my iPhone while an alarm was sounding off, and sure enough -- it silenced it. Never ran into the issue with my 3GS -- either it didn't have the bug, or I never happened to receive a Notification while an alarm was going off. I haven't tested it with my iPhone 5 -- after a few times of telling work that 'my alarm didn't go off', the looks of disbelief have me not trusting any iOS device as my primary alarm clock.
If you have a 30-pin iOS device, I really like this alarm clock, compact and a great sounding mono-radio: Amazon.com: Memorex MA4221 FM Clock Radio for iPod and iPhone: MP3 Players & Accessories
I haven't read about any Lightning alarm-clock docks yet, but will get one eventually. Personally, I've found it's better to think of your iPhone as convenient way to set your >real< alarm clock