Myślę, że to rozgryzłem. Odpowiedź kryje się w fakcie, że wieloprocesorowość w Pythonie jest współdzielona-nic, więc kopiowana jest cała przestrzeń pamięci, funkcje i wszystko. Dlatego dla każdego procesu, nawet jeśli pid jest inny, przestrzenie pamięci są kopiami siebie nawzajem, a adres połączenia w przestrzeni pamięci jest taki sam. Z tego samego powodu deklarowanie globalnej puli połączeń, jak to zrobiłem na początku, było bezużyteczne, każdy proces kończył się z własną pulą połączeń z tylko 1 aktywnym połączeniem na raz.