In the big splashy CoinJoin post I simplified it down a model where there was someone acting like a 'server' that did the join,
but I'd described it a year before in a more complex form that had perfect privacy and DOS resistance (though of course privacy is limited to the anonymity set size; though by building a CLOS network it can be arbitrarily large).
Well as has been recently shown someone could make a bunch of clients acting as servers for coinjoin transactions and gather a lot of data so the current simple version is a bit too simple I think.
I think you should describe your complex version a bit more in detail. Its also not entirely without consequence if an algorithm is very complex, it leaves room for error if no one understands it.
HTTPS is great example of this, yes people just click a button, but the security doesn't work because the certificate system is flawed.