I see where you coming from and actually I do not disagree with you.
Basically we just have different priorities.
Firefox has been hanging more for us in recent months than it has for years. This appears to be due to a couple of popular add-ons we use rather than Firefox itself, but the fact that a failing add-on can take out the entire Firefox process is itself a damning indictment of Firefox's basic process isolation and security model, which is still fundamentally flawed many years after every other major browser dealt with this issue.
Add-ons have literally unlimited access to the FireFox innards. That's by design. That's why FireFox add-ons are actually useful, compared for example to their castrated and harmless Chrome counterparts.
If you want to blame something, blame FireFox' rolling releases strategy. It's basically a cat and mouse game: browser changes, add-on authors has to change the add-ons, by the time they are finished, browser changes again.
That's a fair example, though my immediate question is why these plug-ins ever had direct access to things like keyboard input in the first place, given the obvious stability and security issues you mention.
Because plug-in requires at least a GUI widget. And a GUI widget has access to the event queue. On Mac and Linux that can be coded around - but on Windows you are stuck.
We've been running Java applets embedded within web pages for around two decades, and it's kind of absurd that in all that time and despite the rise and fall of other plug-ins like Flash and Silverlight along the way, browsers and operating systems haven't come up with a better model.
There is no better model currently which satisfies the performance and integration requirements. Plug-ins are black box binary libraries with hooks, allowing browsers to hook the plug-in into the browser. (That's why the browsers do the land grab they do, integrating everything possible or not inside them: they try to make out of the black boxes the white boxes. The obvious issue that leads to is the overstretching of the limited development resources. A team can handle only so much.)
Browsers already do the only effective thing they could do: run plug-ins in their own isolated processes.
P.S.
The only major browser that does not have major crash/hang bugs with any project I work on today is actually IE, which gets a bad rap for historical reasons but objectively has been vastly better in quality than Firefox, Chrome or Safari for several years now according to our bug trackers.
The greater irony (or more like "WTF" moment) is that some Google services actually work better in IE than in Chrome.
Rolling releases my ass. Everybody knows how IE works/doesn't work - stagnation is another word for stability. - nobody can be ever sure about the Chrome. Apparently even Google. Because its version number changes sometimes every day. (Well, it is easy to spot Chrome installing the updates: instead of the usual ~15s to fully start, it takes more than 30s.)