Thanks for the replies, everyone! This is frustrating, but I'm trying to work through it in my head. Something needs to change.
I pitched fresh, dry yeast, within its use-by date, rehydrated with Go-Ferm. I started using the Go-Ferm not too long ago. Could that be leaving something that breaks down into an off-flavor component? Next brew I'll rehydrate with plain water, or pitch dry.
Only plastic I have contacting cold-side beer is a bottling bucket and silicone tubing. After each use the spigot gets taken apart, cleaned, stored in a jar of Starsan until next time. On bottling day I put a gallon of Starsan in the bucket, shake it every so often, then dump it just before filling with beer. No scratches I can see inside.
The silicone tubing gets a thorough rinse and starsan rinse, but that might not be enough due to its porosity. Don't want to store it in Starsan as that corrodes the silicone. Maybe I should boil it. Same with the silicone tubing I use to rack from BK to FV.
I ferment in Brew Buckets and use a Cold Crash Guardian to collect extra CO2. I don't open the lid any time during ferm.
I try to keep bottles clean and sanitized. After pouring a beer I rinse 3 times, then another rinse with a few shakes, dump that, then squirt some Starsan inside, invert & drip-dry. I store them in boxes. On bottling day I dunk each in a bucket of Starsan, and set inverted in a FastRack. Caps get dunked in Starsan. I cap on foam with about 1/2" headspace.
Could be taste perception. My taste and smell had changed a little after I had Covid 2 years ago, so what I'm tasting and smelling could be some other off-flavor. However, commercial beer never has those off-flavors, so it's definitely something in my HB.
People I serve it to think it's ok, but they probably wouldn't comment anyway. I generally don't enter in comps, but maybe I should have an experienced brewer taste some.
My water is RO from a Buckeye system at home. Fairly new filters and TDS is around 4 ppm. I measure salt additions on a gram scale. Mash pH has always been well within range.
I've been using the LODO trifecta, but that has predated this new issue. I do a few of the LODO methods, and try to minimize stirring, splashing. I still can't help think that this is oxidation, even though this recent batch is fairly new. I found out in another thread that I can add a gram or so of AA per gallon at packaging. Might try that.
Grains and hops are fresh. I store grain in ziplocs placed inside gamma seal buckets in a cool location. Hops are vac-sealed and kept in the deep freeze. Dry yeast stays in the fridge.