Zu Punkt 1 und 2:
Erzeugen und und freigeben sollte immer nur einer. Alles andere ist
imho, wie du schon festgestellt hast, ein Designfehler.
Beim Konstruktor ist es noch einfacher: solange der sich noch nicht zurückgemeldet hat, weiß ja niemand von dem neuen Objekt. Also kann es innerhalb des Objektes keine Kollision geben.
3.: Passt so.