@teukon's observation seems relevant. However if Alice includes some random data along with her address, but Dave only publishes a list of addresses (without the extra random data) them Bob couldn't determine Alice's address.
This was my first thought. I checked out the paper to see if something along these lines had been included but found nothing. I'd add to this and suggest that all participants add some random data to each level of the layered encryption. If they add random data just to their address at the beginning, then Bob and Dave, working together, could determine Alice's (and therefore also Charlie's) address.
I assume something in the presented method tackles this, for if everyone is able to rebuild and compare in this way, then there's simply no point to the layered encryption in the first place. Participants could pass unencrypted addresses with the same result.
Another potential remedy is to undergo multiple rounds, where each participant has a chance to be somewhere in the middle of the chain. Assuming no more than one dishonest node, I'm fairly sure "maximum mixing" can be achieved in O(log(n)) rounds (where n is the number of participants) but it's not clear to me how devastating colluding members would be in this model.
Clarification would be appreciated.