You won't break every single method, they already went through that
recently when override was made a requirement.It will only break the base declarations, which are far less numerous.
Coming off the sidelines:
1. I think in the general case, virtual by default is fine. In code that is not performance-critical, it's not a big deal to have virtual functions, and it's usually more useful to have them virtual. I've experienced plenty of times with C++ where I had to go back and 'virtualize' a function. Any time you change that, you must recompile everything, it's not a simple change. It's painful either way. To me, this is simply a matter of preference. I understand that it's difficult to go from virtual to final, but in practice, breakage happens rarely, and will be loud with the new override requirements.
2. I think your background may bias your opinions :) We aren't all working on making lightning fast bare-metal game code.
3. It sucks to have to finalize all but N methods. In other words, we need a virtual *keyword* to go back to virtual-land. Then, one can put final: at the top of the class declaration, and virtualize a few methods. This shouldn't be allowed for final classes though.
My one real experience on this was with dcollections. I had not declared anything final, and I realized I was paying a performance penalty for it. I then made all the classes final, and nobody complained.