How to use custom versioning

Paper2D seems to contain a usable example.

Your explanation sounds correct, except for where to perform the upgrade. In Paper2D, upgrade code is run in PostLoad, after querying the custom version:

void UPaperFlipbookComponent::PostLoad()
{
	Super::PostLoad();

	const int32 PaperVer = GetLinkerCustomVersion(FPaperCustomVersion::GUID);

	if (PaperVer < FPaperCustomVersion::ConvertPaperFlipbookComponentToBeMeshComponent)
	{
		if (Material_DEPRECATED != nullptr)
		{
			SetMaterial(0, Material_DEPRECATED);
		}
	}
}