La solution à ce bazar dans le `synchronized` ce serait pas plutôt que quand un noeud fait des appels RPS qu'il n'impose pas son nouveau tableau à ceux qu'il a contacté ? 
Cette solution fait que l'existence de ce noeud ne peut pas se propager (vu qu'il ne se mettrait pas dans le nouveau RPS qu'il enverrait à tous ceux qu'il a contacté) mais on pourrait faire en sorte que quand est noeud est pingé il rajoute automatiquement le pingeur à son tableau RPS, du coup ça assurerait la propagation sans s'amuser à renvoyer des tableaux complets à tout le monde (en gros c'est chaque noeud qui refait son tableau).

Du coup, pas besoin de séquentiellement mélanger les tableaux RPS local et distants pour chaque noeud contacté (là ça fait `n` fois le mélange des deux où `n` est le nombre de noeuds contactés), on pourrait faire un gros mélange des `n` tableaux RPS qu'on a récupéré (en faisant gaffe aux doublons).