The h-/b-/p- sounds are special, compared to the rest, and I think especially p- should not be treated as rendaku.
I’ll just parrot Frellesvig (see History 11.3 and 7.3.1). There seems to be some agreement that p- used to be the original sound, which changed several times throughout the history of the language. Thus, depending on when words were coined, different patterns stuck and remained, so it’s a bit of a mess.
The changes are complicated, but one thing that holds is that p- became either (w)-, or f- then h-, except after N (ん) or Q (っ), where either it remained p- or became b- (in older words). So, according to this analysis, what you see is that those kanji have always had alternating readings associated with them, e.g., 輩 was pai, but the sound became fai then hai, except after N or Q, where it remained.
Therefore, it’s not that 輩 is hai and mutates to pai, but rather the opposite; it was originally pai and retains that shape after some sounds. This does not explain why a few words do not respect the rule; I would guess that they were formed transparently after the change took place and were seen as two separate words juxtaposed (similar to what the Tofugu article calls dvandva rule), but phonetics aren’t really my thing and I haven’t looked further.
Speaking of the Tofugu article, I would caution against reasonings such as:
This high probability for misunderstanding is most likely why kango compound words do not rendaku.
It might be that speakers are voluntarily avoiding homophony at any one point in time, but if you look at history, it is a fact that many sound changes have contributed to creating more homophones in Japanese. Just look at all the sounds that merged into -oo: anything that was -au, -ou or -eu became -oo (or -yoo for -eu), and of course there’s the genuine -oo. Plus, as we’ve seen above, since pu changed to (w)u at some point, that doubles the number of moras that morphed to -oo… so I’m not quite sure I buy the “homophone avoidance” argument.