I have a workflow with 19 branches (and may grow). For each branch I want to start a sub-workflow, and all workflows must complete before the main workflow continues. Theoretically this sounds doable, but before I implement this I want to know if there are any limitations that I must be aware of? is there a limit on the number of concurrent workflows that can run on the same item?
known limitation is that a single workflow can run on an item just once at a given time.
so as far as you are not going to start the same workflow in several branches it should be ok.
I'm not aware of limitation on max parallel branches
Looks like in each branch you are just starting a workflow based on some conditions. In case you have nothing else to be added to your branches, I say you can use Conditional start option in your workflow it self. By this you don't need to have your main workflow to start other.
But make sure that your other workflows doesn't have set start option on edit item and, in your workflows if you are doing some update item actions then you may encounter looping between your workflows.
Or else design only single workflow and under your run if conditions instead of using start another workflow, have all your actions in a single workflow itself.