I highly recommend the ARM templates, in the Azure portal, navigate to your ADF instance and click on the "Author & Monitor" tile. Then, click on the "Export ARM template" button from the ADF blade. This will generate a template of your entire ADF instance. After exporting, you might need to modify some parts of the template, especially the parameters related to naming conventions or tenant-specific resources.
Log into your new tenant, and use the Azure portal or Azure CLI to deploy the modified ARM template.
Or you can use the SDK, where you can write a programmatic solution to extract ADF components from the source tenant and create them in the target tenant. This might be overkill, but it offers greater flexibility and control.
You can try Azure PowerShell cmdlets to extract configurations from the source tenant and apply them to the target tenant. Check the official Azure PowerShell module https://docs.microsoft.com/en-us/powershell/azure/new-azureps-module-az?view=azps-10.5.0 for more details.
For smaller ADF configurations (though yours is moderately sized), you can manually recreate the linked services, datasets, pipelines, etc., in the new tenant. You can export individual pipeline JSON definitions and recreate them in the new tenant. This is tedious, but sometimes it's the best way to ensure everything is set up correctly.