I don't think I'm disagreeing with anything you've said. I've always had a bit of an issue with BABIP or, probably more accurately, the way it is used.
The .290 is indisputable; it's just math. But it's the average across the league. It seems anytime any hitter differs from that number they are classified as lucky or unlucky. But every players resting(?) BABIP is different. Sure .290 is the average but for some players its much higher; others much lower - for the reasons you listed.
Happ's career BABIP is .308 - which I think makes sense - he hits a few HRs, SOs a lot and walks a lot. To have lasted as long as he has you'd expect him to come in above the .290. I don't think he's been lucky his entire career. Contrast him to Joey Gallo (an almost pure 3 outcome guy) who was out of the league by 30 with a .254 BABIP who I don't think was unlucky.
Then take a player like Rey Ordonez who put the ball in play at very high rate. Didn't SO, didn't hit HRs and didn't really walk. His career BABIP was well below .290 at .271. Some people are just crappy hitters.
I guess my point is that .290 isn't just some magic number that players all gravitate towards. I mean if Tony Gwynn had a .310 BABIP for a month he'd have been in a slump.