On Onix (and Geodude partially), I feel that being so good for three gyms warrants B. Put simply, if SM Solgaleo/Lunala are B when they are present for a much smaller portion of the game, I think Onix should be B, assuming that you completely ditch it after Whitney.I think you're overrating Onix' amazing early game a bit too much. It's basically an S up until Morty, but it's utter trash after that. I think a high tier mon should be good for the entire game, or at least a big part of it. Three good matchups isn't gonna cut it in my opinion. I think D or C is a bit more appropriate.
I strongly disagree with Dragonair in B. I used it a while back, and i just didn't feel strong enough to be a high tier. Even disregarding the fact that you have to get it from the gamecorner, and that you have to buy it TM's, it's just not great. The main problem is that its stats are extremely mediocre, and dragon rage isn't helping that in the late game.
I find the argument that you can trade it for Dodrio not particularly compelling either. Not only does this argument have nothing to do with Dragonairs own performance, I don't think Dodrio is a very good reward either. What is it going to do at the e4 with like no movepool? If you have to trade away a Pokemon because it's not as good as the mon that you get back, it probably isn't a very good Pokemon. So if anything, I think this argument actually undermines Dragonair's performance.
I agree with pretty much everything else though, especially Dunsparce. If Marowak keeps up at the E4, I can see it in C maybe. It's probably better than Dugtrio at least.
On Dragonair, it seems we have vastly different experiences. In my experience it's about equal to Lapras up to Clair, minus the Lapras backtrack, and would definitely be A if not for the endgame. The Dodrio is also very much a part of Dragonair's viability, since making the trade in the first place implies raising Dratini; the traded Dodrio's viability (which is actually not that bad - [Secret Power/Return]/Fly is enough of a movepool by themselves) belongs entirely to Dragonair.
On Marowak, I feel like it could be C if not for availability: because it's in the Desert (which is never in your first Safari Zone visit, meaning you have to wait 3 in-game hours) it's more annoying to get than pretty much all the other Safari Zone mons.