That's strange. I seem to get Vassalization offers all the time. Khmer, Indonesia, Korea, Portugal, Italy, and Iran seem to want my protection quite often. I've also had a good number of offers from other civs that are usually strong but have either just resurrected or been beaten in a war. My last Spain game saw China come calling after its respawn, while in my most recent Viking game the Spanish got crushed by the French and made me an offer.
You do have a point about strange double-standards, though. And some civs, notably Mali (as you said) and Thailand, seem to stay independent way more often than they should, despite being backwards and tiny. And I definitely agree that civs should be more strategic when making vassalization offers; if they're at peace and don't see any immediate threats, they should stay independent unless they're seriously lagging. But when they're at war they should get smart and seek a viable protector. I admit that might be a lot to ask of an AI, though.
And it is annoying that friendly vassals are so tech-stingy. I mean, I get it, they shouldn't just give them away for free, but if I go through the trouble of getting a vassal and getting them up to speed technologically, I should get some sort of tech reward.