Restarting SQL Server fixed the problem for now. It does seem like sp_OADestroy is not always being called - T-SQL error handling is just not good enough.
I use dynamic SQL here and the procedure is designed to work by feeding any table name to it. To create a replica first I would require knowledge of...