The option of using a workflow (I was thinking in simple CRM workflow out of the box) is in case the migration process is simple and it doesn't require any transformation. If that is not the case, I would go for the ETL option.
What do you mind by "a lot of control over field contents"? Could you share with us part of the code/customisations that you have at the moment? That will help me to tell you the actual option I would use.