So allowing someone to sign themselves into slavery should be "legal" because it's "impinging on someone's right to enter contracts"? I get that some people balk at "morally reprehensible" as some sort of slippery slope, but c'mon we as individuals have to function somewhat coherently. As a social species reliant on some form of social cohesion (how much oil did you refine this morning?) we have to have some guidelines.
Legally, your "slavery" distinction is not the same thing as agreeing not to speak a certain way about a company. Slavery implies that you can be forced to do things that you do not want to do, as it is inclusive of future decisions by the other party. Agreeing to not so some specific action, while it does bind you from future freedoms, is exclusive of any other action the party may wish you to undertake. (IANAL)
We already recognize that contracts that violate one party's fundamental human rights cannot be enforced because they "shock the conscience", in terms that American jurists use. This article does not include the terms of the non-disparagement clause, or the other terms and payments, so we can't really say whether the clause is vulnerable to being ruled unenforceable by courts. But it's wrong to say that nobody can enter into contracts that constrain their speech. People do that all the time.
I mean it is currently legal in most countries to do that.
Read about record contracts. Prince spoke extensively about his restrictive contracts.
Fwiw, I think making such non-disparagement clauses illegal is an interesting idea, and could be a net positive. That said, I think the slavery comparison is a stretch. The situation up for debate is: Should you be able to voluntarily accept money in exchange for promising not to say bad things about someone or some company? I don't see a good faith interpretation of that as "signing yourself into slavery".