I agree on the error codes, getting the same useless error for all error conditions sucks.
However, the reason pretty much everyone wants to do away with flash (besides all the exploits) is (mostly) because it doesn't support byte range requests. This sounds trivial but it leads to some huge headaches and inefficiencies that HTML5 cures.
Seeking videos in flash requires that the web server understand and act on the start=? parameter (where ? = seconds into a video for MP4, bytes for FLV). This means the server has to have the entire file (this is a huge problem for CDN providers), it has to read and understand the metadata (which may be at the END of the file), it has to then use that metadata to seek as far as the client requested into the video (which it may not have yet), then finally append a new header/metadata and start serving those bits to the client.
With HTML5 the client simply says 'give me this file starting at X bytes' via a HTTP range request. No metadata handling necessary, and no need for massive software infrastructure upgrades to handle new container formats. (For a CDN the range request can be directly passed through and handled by the midtier or origin that actually has the file)
TLDR; Flash makes web servers do stuff they shouldn't be doing, HTML5 video playing fixes that.