Great job laying out your question and relevant base information. It looks to me like the best way to do this would be to create a new table called “Workstream”, then link each task to a “Workstream”. If you make just that one change, you wont gain much, so you might be using a Single Select Field or something similar.
However, once you have your tasks linked to a record in another table you can use a Rollup field and a Lookup field to accomplish your goal.
First, in the “Workstream” table, create a Rollup field called “Project Start Date”. Then rollup the Start Date based on the tasks linked to that workstream and use the formula: MIN(values).
Second, in the Tasks table, create a lookup field called “Project Start Date Lookup”. Then lookup the “Project Start Date” from the “Workstream” table.
Finally, group your records in the Gantt by the “Project Start Date Lookup” field. This should sort them by the earliest start date.
Honestly, I would prefer if the Gantt app could condense the projects to be stacked better when tasks are happening on the same day, but we can’t have it all
I hope this helps! Feel free to share any other questions you have.