Although everything you've done so far is good practice, there's one big thing that's missing: singing!
When you sing (especially when you use a particular system—more on that later), you connect particular pitches with their functions. The more you do this, the more you'll hear music and recognize what the scale degrees are, and you'll be able to do this in real time.
But in order for this to work, it's best for you to use a functional singing system. If you use solfège, you'll want to sing movable-do solfège, because the syllables map onto particular functions (i.e., "do" is tonic, "sol" is scale-degree 5, etc.). You could also just sing on scale-degree numbers.
You could sing fixed-do solfège, but it will take a little more time to reach the level that you're hoping for. I'd only recommend fixed-do if you're a young child or if you're a college music student.
I'd go so far as to say you should forego your interval training and use that time for functional singing instead. Although interval training can be helpful, it's nowhere near as helpful as functional singing.
As for harmonic dictation, the best practice is playing things at the keyboard. But as you're playing them, make sure you know what harmonies you're playing at any given time. Only then will you map function onto sound.
But through it all, remember two things:
- These things take time!
- And perhaps more importantly, be realistic with your goals and your progress. Very few people in the world can hear a Beethoven symphony and transcribe it all. And to be honest, such a skill is not necessary to be a successful musician.