I think the main problem is the single-winner election system itself, and even the best voting mathematics can do only very little to help that. They all will still lead to a two-party system.
Only the presidential elections need to be single-winner. But for all other political bodies, a proportional system where at least 5 to 10 representatives are chosen from each voting district, would be better. Choosing e.g. 10 winners from a single voting district with a proportional voting system would set the election threshold to 10%, so any party with at least 10% support would get at least one representative. This is how almost every European country runs their elections. (Only UK and France still use single-winner systems.)
This is the only way to bring diversity and options to the political landscape. And by having more than 2 viable parties, you would have more diverse political discussions, too.
And even for the single-winner presidential elections, more than 2 parties would have the existing organization and funding structures to plausible run campaigns and candidates, so as a byproduct you would get diversity and options for the presidential elections, too.
I do recognize that it is problematic to organize proportional voting for (a) the Senate and (b) for those states that have less than 5 House representatives. For example, you'd need to pool Idaho, Montana, Wyoming, N Dakota and S Dakota into one voting district. But even if you went with proportional voting only for the House, you'd still have more than 2 viable parties in each state, who each could make serious attempts to run for the 2 senators. So you would still get more than 2 parties represented in the Senate, too.