Since version 4.8, something like that is part of i3 and there's a detailed guide on the website, but here's a short version:
Once you've set up a workspace like you want it to be, save its layout with
i3-save-tree --workspace
into the file `~/.i3/layout-ws-xyz.json`. You'll then need to edit that file to enable criteria that match windows in the layout.
After that, you can restore that layout with
i3-msg "workspace
This will open placeholder windows on that workspace and when a window matching the criteria enabled in the layout file appears, it will be placed in the corresponding placeholder window.