I have not been brewing much longer than you have, but here are a few things that are becoming clearer to me.
First, is aging & patience. I’ve had several beers that were kind of bad or yucky at the beginning, but by letting them bottle age for a month longer, they became drinkable… after another month, became pretty good… after another month, were downright tasty. I’ve had others that started out as pretty good right off the bat (i.e., 2-3 weeks in bottle) but 2-3 months down the road were magnificent. I feel like the sweet spot for the beers I make is about 4-5 months after brew-day, and so I need to find a way to be patient until then. (I generally start trying them out 6-8 weeks after brew day, but I almost always find that the last few bottles are always the best, and I find myself wishing I had waited longer.)
So I’ve built a ‘pipeline’ of staggered product in my basement containing anywhere from 4-8 different batches, trying to build up enough reserve so that I’m not drinking them too early.
That said, it sounds like the beers you brew may be better consumed younger than the beers I brew, but it’s worth squirreling a few bottles away from each batch to see for yourself how they age.
Fastidious sanitation is perhaps the biggest factor (and probably goes without saying). This one is really hard for me, as a guy who used to wash his hands once every few years, and is the human equivalent of Pig-Pen from Charlie Brown. I am a slob, but homebrewing has forced me out of my comfort zone into being a clean freak (or sort of trying to be, at least) during the brew process. As much as I hate it, the better I am at cleaning/sanitizing, the better my beer. #StatingTheObvious
Third thing is grain quality - some malts really are better than others, and while some of them may cost 20 cents more per pound than the cheaper alternative, at my volume (usually 3 gallon to 4.5 gallon batches) it’s ridiculous for me to penny pinch, and I can taste the difference.
Thing 3b, speaking of grain: I am so glad I finally went to crushing my own, instead of buying pre-crushed. Not just control over the fineness of the milling, but the freshness. (The latter is not issue if you’re buying grain bill batch-by-batch as you go.) It’s another step, but I enjoy it.
Lastly, I don’t do temperature control when fermenting, so I pick a yeast that will perform optimally for the temperature ranges my basement will be at for the next 2-3 weeks. I often do split batches where I try 2 or more different yeasts on the same wort (but in different FVs, obviously) and I often get better results from a second-choice yeast (better suited for those temps) than from the primary yeast I wanted, if that primary yeast was straying into the wrong temperature range.
I’m not much help re: the specific issue you mentioned (oaky) and maybe very little of my brewing circumstances translates to what you do. Just remember, if a beer is mediocre, or you have to toss a batch, let it go. The NEXT one you brew will probably be awesome!