I agree that the Vassel system needs to be improved. I hate when I've nearly eliminated a civ and suddenly they become a Vassal to another civ, and it triggers a war. If anything, it should trigger peace.
Ideally, if a civ becomes a Vassal State its Master should issue a warning that your enemy has become their Vassal, and will issue an ultimatum that you either agree to a cease fire or they'll join the war against you.
Also, you should have the option of relinquishing your Vassal. The reason being that your reputation can suffer if your Vassal is the rivals with another civ, so you might prefer to improve your relations with that civ rather than keep your Vassal. Also, if your Vassal only has one or a few cities left, and especially if they're isolated colony cities on the other side of the map, chances are that another civ will attack them and drag you into a war. That's why I'd prefer to have the option to relinquish a Vassal State.
Also, I think that if a civ becomes your Vassal, you should be able to demand anything from them, including Gold, Technology, Resources (even if they only have one of that resource), World Map, as well as decide their policies (like trade and open borders), civics, and state religion. The only thing that I think that if the Vassal State refuses you, you should be given the option to declare war. Also, the Vassal State should be allowed to declare war on you if you demand too much.