I'm mostly a lurker, but I played with some more obscure Pokemon and did fairly well.
Maybe put Zubat a tier down. It can still own things, has typing suited to beating up Team Rocket, and Crobat is a pretty good user of Fly.
If nobody's gonna put cases forward for Natu and Larvitar, I will.
Natu is an amazing Synchroniser. You can get it as soon as Surf is available, and if you have a Modest/Adamant Synchroniser, getting good-natured Pokemon will be far easier. It's not too bad as a support Pokemon. Assuming you get it pretty early (same time as Lapras, for instance), you can evolve it at 25 (it comes at about lv18-22), then raise it to 30 and make it a supporter. It learns Tailwind and Wish naturally, and you can give it screen moves too. I kept Night Shade and poked away at opponents with it. It served an okay purpose in the E4 when I gave it a Choice Scarf and let it throw up an appropriate support move.
Larvitar comes at a fairly low level (17 in the Mountain area of the Safari), but once you get/beat Red Gyara, you can get an Exp Share and whack some trainers about to raise it to a passable level. It suffers from the same faults Dratini does, but the key difference is the level-up moves it gets. It comes with Rock Slide, a very welcome Rock move, as well as Sandstorm, a pseudo-Light Screen for itself. It learns Payback at lv34 (as a Pupitar), which is a consolation for its mediocre speed. I used it successfully in the Mahogany Gym (with the anti-Water berry on it), and normal Trainers without resistance to Rock were broken down quickly. Crunch and Earthquake (useful) come soon after, probably a gym or two into Kanto. It still doesn't really make it great, but once you get Tyranitar, you're basically set. Sand Stream makes Red's Lapras far less annoying. I would put it up a tier to Mid, but that's just me.
Also, Shuckle can be carried around to produce Rare Candies (I think), plus it can probably stomach a hit or two as a sacrifice, even untrained.
Confused/Angry anti-Dratini rant (I used Dratini myself):
Dratini is one of the few Pokemon that you can easilly get a preferred nature for. If you're buying it from Goldenrod, simply save and reset after purchasing it from the Game Corner until obtaining an Adament nature. Similarly, if you wait until getting it from Dragon's Den (with Extremespeed), you can reset for Adament as well. Resetting for a preferred nature only takes roughly 5 minutes at most.
With that logic, you can do precisely the same with Synchronise Abra, making any Pokemon with a preferred nature fairly easy to get.
Now, you can either keep Dratini from evolving until level 51 (pain in the ass, I know, but it will get Outrage at that level, which when you evolve into Dragonite will KO everything), or evolve it at level 35 into the powerful Dragonair.
We have to keep Dratini as a basically-useless-except-against-Pokes-twenty-levels-lower pseudo-sweeper?
Dragonair gets a bad rap; its stats are above average, and it has access to Waterfall and a STAB Dragon attack alone, making it quite lethal. If you waited until Dragon's Den to recieve it, then it also has Extremespeed. When it finally evolves into Dragonite, it also gets Fly. In conclusion, Dratini may be a bitch to train, but it seriously pays off.
STAB Dragon is pathetic in-game. Never tried putting Fly on Dragonite.
Took me roughly an hour and a half of training grinding getting my level 15 Dratini to level 51.
What did you do, trade it to Diamond, give it a Lucky Egg and chain Chanseys? No way this would ever occur along the course of the game, even post-game it would take at least 2 hours.