I’ve used the New Blog Templates plugin from WPMUDev and it works pretty well. It will create a new site on your network from an existing site on your network.
Everything is copied over to the new site, content, images, nav menus, settings, etc.. It will copy site1.example.com and create site20.example.com.
It will not create the custom domain mapping for you, or add the custom domain to Apache, but it gets you 90% there.