Issue was indeed in join operation, mesh in which we join all others could be re-added to final data after others, leading to undesired re-ordering of CD layers, and existing vertices etc. being shifted away from their original indices, etc. All kind of more or less bad and undesired changes, fixed by always re-inserting destination mesh first. Also cleaned up a bit that code, it was doing some rather non-recommanded things (like allocating zero-sized mem, doing own coocking to remove a data-block from main, etc.).