Ran is a solid character but she's not much of a tank.
If you think that then you didn't build her defensively :V
Yukari, for example, works wonderfully as a tank if build that way. Then I tried Ran as a tank and realized that
every single one of Ran's stats was superior to Yukari's after I skp'd her out and everything. I used a DEF build on them both, by the way; since Yukari already had superb mnd but kept being frail as soon as physicals came out, and was offensively nigh-useless anyway, outside of weird situations.
Ran is also amazing offensively because her composite attack has such low delay and a great formula ontop of her great stats. And when you have the sp for it, spamming her def/mnd buffs can keep your party
nigh-permanently at 70~100% buff, which makes a -massive- difference (If you aren't opening ***Winner*** battle with Reimu and/or Yukari def/mndbuff and having Ran on permabuff duty the whole fight to keep it up, you're doing it wrong). Ran is just... amazing. However, I find her usefulness low until her SP rises up, similarly to Aya, whom also skyrockets in greatness with high SP (Aya is chen 2.0 even if the boss resists WND).
I used Keine for awhile and I found her to be a good off-tank and a good alternative for Iku... although not particularly special (If only you got her earlier.). It's also very notable that, due to Keine's much better SPD, Keine can actually be spec'ed out to go before the rest of your team in randoms and buff them up to do much higher damage. It's the one thing Keine actually shines at!