I'm going to do these out of order for a reason.
( b )
Here if I bid 3C partner will know I have a great playing hand since I've potentially forced him to 3S with two black small doubletons. This will allow partner to bid game with a couple of fitting black honors.
On the other hand, bidding 2S on:
( a )
doesn't guarantee much of anything when playing negative doubles, since if opener is short in hearts he has to cater to partner having a decent hand with hearts. South would bid 2S on QJxxxxx, x, AJ, QJx and partner will pass most of the time with a non-descript 8 count.
Now put yourself in North's position with something like: x, Axxxx, Kxx, Jxxx. North isn't going to make a negative double and isn't going to bid after 2S. Why is North going to think you have eight tricks? If you don't play negative doubles, so that 2S implies values, 2S is fine. However, when 2S can mean "I had to act because I'm short in hearts and my hand is unsuitable for partner leaving the double in", I think you need to bid 3S. After all, you want to be in 3NT opposite as little as the HK and club length and you want to be in 4S when partner can provide 2 tricks and 3NT isn't an option.
( d )
I would bid 2NT, (a) to cater to the fact that partner might have enough high cards for game, and failing that, (b) partner might have a long suit (diamonds maybe) and a weak hand and can bail out in his suit, knowing I have some support.
By the way, I would have opened this hand 2NT (20-21) giving myself a point for the excellent heart suit. If I open 1H and partner responds 1S, a non-forcing 2NT doesn't do this hand justice. I suppose 3NT does but that means something else in my partnership (and unless that shows specifically a doubleton spade, partner will never know when to pull it to 4S.)
It is that support issue that prevents me from bidding 2NT on:
( c )
because if I bid 2NT and partner bids 3C or 3S to play, I'm going to be unhappy.
Note: 3S by partner would be to play after 2NT. If partner had 7 points and 5 spades and didn't make a negative double, partner might cuebid their suit to suggest game and doubt about the final strain. You could now bid 3S on a 3-card suit in case that was partner's strain problem.