ich würde es ganz anders lösen, und zwar ohne, dass die refs alle eine ebene hochrutschen, indem man bei der abmeldung von user B einen "imaginären" neuen user B erstellt, der die lücke füllt, aber nicht mehr aktiv ist

Wenn der Werber des Werbers vom User der sich abmeldet (User B), in der 3. Ebene des abzumeldenden Users ist, entsteht eine Schleife. Demzufolge darf der Werber von User B nicht als Werber von User C eingetragen werden.
das stimmt natürlich, damit werden aber die user A benachteiligt, bei denen dies der fall ist, da sie bei abmeldung von B ihre 2. und 3. ebene verlieren, nur weil sie von E geworben wurden, andere bei denen es nicht so ist, bei denen rutscht sogar die 2. und 3. ebene auf, sodass sie dadurch einen vorteil haben.
dass ist wohl keine gute lösung.