You are literally describing the idea of Debian. Yes, stable is old, but that is the whole purpose. You get (mostly) security updates only for a few years. No big updates, no surprises. Great for stuff like company PCs, servers, and other systems you want to just work™ with minimal admin work.
And testing is, well, for testing. Ironing out bugs and preparing the next stable. Although what you describes sounds more like unstable, the one where they explicitly say that they will break stuff to try out other stuff.
So, everything works as intended and advertised here. If you want a different approach to stability, I guess you will have to use a different distro, sorry.
I guess when you last tried it, it was at a time when a new stable came out, so testing was more or less equal to stable.
About the firefox: It ships Firefox ESR these days, meaning you get an older, less often updated tested firefox (with security updates, of course). Again, this is the whole point. Less updates, less admin work, more time to find and fix bugs. Remember the whole Quantum add-on mess, for example?
As others have said, you can install other versions of firefox (like the “normal” one) via flatpak, snap… nowadays. The same goes for other software, where you would need the newest and shiniest version sooner. I’m using debian on my work/uni laptop and a bunch of servers, and it works pretty well for me.
The Linux kernel actually uses quite a bit of OOP ideas. You have modules that are supposed to have a clear interface with the rest of the world, and they (ab)use structs to basically work like objects. If you try hard enough, you can even do “inheritance” with them, like with their struct kobject. It is actually somewhat well-thought-out, imo. No need to go full OOP, just pick some of the good parts, and avoid the MappingModelFactoryServiceImpl hell or the madness that is C++.