Please do followup with any minutiae that I might have missed so others may follow your lead.
As a last resort, you can always manage object lifetime yourself with AddToRoot() and RemoveFromRoot(), which will prevent object garbage collection. Be aware, that you cannot do this with an AActor. I’ve worked around this though in the past by preserving the “guts” of an AActor in a UObject and restoring it on a newly spawned actor on the other side.
Happy to help.