I did find the answer myself, but others might benefit:
There is no need to open the program before converting the container to tabbed/stacked. That is:
- Split the window in a direction
- Convert it to tabbed/stacked (does not result in any visual change)
- Launch the new program, it will launch in a tab/stacked
One can probably use i3-msg to create a short program that makes it a single commmand, instead of two.
A design question related to that would be: Why is there a difference between a "splitting layout" and "layout"?