A company trying to do it themselves is pretty insane.
Correct me if I'm wrong - but I guess Canon is licensing some ip core with sdk and then either puts it inside one of their custom chips or adds another chip on its own (probably together with gps). If that's so, then Canon dryos doesn't do anything different than Linux would do: interface with the wifi ip core and do some high level requests like "please connect to xyz" or "transfer image abc"?
I suspect you're correct about how they do things currently, which could explain why it is so broken. The more sane approach would be to use a bog-standard standard Wi-Fi chipset hanging directly off the bus of your choice on some bog-standard ARM code. Better yet, use an ARM SoC that contains a Wi-Fi chipset built-in. Either way, Linux would be providing the networking stack, which would probably be a lot more spec-compliant than most of these embedded TCP stacks, and would provide a full set of networking APIs, with full service discovery, and most importantly, proper multitasking.
If they used a proper multitasking OS, you wouldn't have to tell the camera in advance whether you planned to use a phone or a computer to connect to it. You wouldn't have to choose between Wi-Fi support and video recording capability (though during recording, the camera software might still need to limit the speed at which it reads photos or video from the card to send over Wi-Fi if the flash card isn't fast enough to handle both operations at once, or possibly refuse all non-streaming connections while recording is in progress). And so on.
At least from the outside, it looks like the Wi-Fi implementation is badly hampered by a poorly chosen architecture that really isn't suited to networking. I mean, it isn't surprising from a company that has always historically used RTOSes, but the RTOS approach really doesn't scale very well as the technology becomes more complex. That's why, for example, when Apple moved from iPods that played music to more complex devices that supported networking (iPhone and iPod touch), they ditched the RTOS for a full-blown OS. That's why nearly every TV and set-top box out there runs some version of Linux. That's why nearly every phone out there runs either iOS (based on BSD) or Android (based on Linux). That's why nearly every Blu-Ray player runs some version of Linux. That's why nearly every home DSL or cable router runs some version of Linux or BSD. And so on.
Then again, I've worked both at Apple and at an embedded Linux startup, so it's possible that I'm just a bit biased against RTOSes.