Since you are not keen on sharing information, I will only answer by listing some points to consider:
- To reduce time, run things in parallel. This means that you need to identify operations that run independently without blocking each other and put these in separate scripts.
- Run all copying with non-clustered indexes and foreign keys disabled. Re-enable them in the final step.
- For larger amounts of data, run things in batches. It's important that your batching conditions follow the clustered index.
It goes without saying that you need to rehearse and test the scripts you develop.
I am assuming here that the new databases are on the same server as the source database.