Walrein i'm kinda more debatable on. I personally think it's a high C-rank, but I can definitely understand a B-rank. Walrein needs a bit more support, imo. Its only real way to heal itself is through Ice Body, and it has pretty terrible 4 moveslot syndrome IMO, trying to fit Toxic, Blizzard, and Roar into the last moveslot. In addition, it's weak to Stealth Rock, but also takes damage from spikes, meaning it can't switch into all that much, especially not with a Fighting/Electric weakness. Anything with Roar makes its life hell, as well. That being said, if it does get in for free, whether after a KO or through a ballsy double switch, once it's in, it's in. And it's going to be in for quite a while, with Sub and Protect, it just doesn't die. While it stalls quite well, it doesn't do much back to the opponent most of the time, aside from just sitting there. That's why I think it's high C-rank, but I can definitely understand a B-rank.
I honestly don't think there's a case of 4MSS. As someone who has gotten high on the ladder with a hail team including Walrein, you really do need toxic spike and hazard support to make it work, and the only real viable moveset is Roar - Blizz - Prot - Substitute. Anything with Roar doesn't really make its life hell, because with a bit of speedcreeping it can easily outspeed other common roarers, most notably Empoleon, Blastoise, Snorlax. As to your comment about it "not doing much back to the opponent other than sitting there", I'd like to point you to some calcs.
0 SpA Walrein Blizzard vs. 4 HP / 0 SpD Roserade: 236-282 (90.07 - 107.63%) -- 43.75% chance to OHKO
0 SpA Walrein Blizzard vs. 100 HP / 0 SpD Nidoqueen: 284-336 (82.08 - 97.1%) -- guaranteed 2HKO
0 SpA Walrein Blizzard vs. 0 HP / 4 SpD Shaymin: 248-294 (72.72 - 86.21%) -- guaranteed 2HKO
0 SpA Walrein Blizzard vs. 0 HP / 4 SpD Mienshao: 186-220 (68.63 - 81.18%) -- guaranteed 2HKO
Granted, it's not exactly an offensive powerhouse, but if something's weak to it or fairly frail, its an easy "1HKO" after hazard support and protecting to rack up hail and toxic damage. You have to remember that even without investment, it's still a 120 BP Stab move.
Finally, you stated that "it can't switch into that much". Walrein can basically switch into any choice-locked pokemon on a non-super effective move or any tank/wall in the metagame. Just as common things it can easily switch in to, get free subs, and start to troll, I'd like to point you to Umbreon(without toxic), Bronzong, Swampert, Azumarill, Sharpedo, Kingdra, most variants of Slowbro, Scarf Flygon/Krookodile and basically anything else that isn't in a favorable situation. With some necessary team support in the form of Qwilfish/a special wall, it's pretty easy to lure out pokes that Walrein can just demolish.
At the end of the day, Walrein would be S-rank if it could wreak the havoc that it does without massive amounts of support. The only reason that it isn't looking at a banhammer is the fact that it practically requires massive amounts of support in the form of hazards to help it stall, Abomasnow to set up weather, a Poison type to keep toxic spikes off the field, and some resists to let it safely switch in. Once in the field, however, it can basically sweep the entire metagame purely by wearing them down. The only true counters to it lie in things such as RD Kingdra or SpD Zapdos, as everything else will be easily slaughtered.
In case you couldn't tell, I'm nominating Walrein + Rotom-F to join Abomasnow in at least
B-rank.