If I had to hazard a guess here, in the first case, the StaticFindObject doesn’t find any UObjects that were created with the EInternalObjectFlags::Async flag set. So any morph target already created with that flag set, either because it’s still in the async loader thread, will not be found. Adding a call to StaticFindObjectFastSafe(UMorphTarget::StaticClass(), BaseSkelMesh, *ShapeName, RF_NoFlags, EInternalObjectFlags::Async) to see if it’s there. If wanting to delete the object, it’s probably best to clear the Async flag as well via ClearInternalFlags(EInternalObjectFlags::Async).
Not sure why the cooker is complaining when renaming the morph target out though. I’d have to check with the cooker people to see if there’s any sort of scoping I can put around that section to prevent the cooker from freaking out.