mark to save, where the last split happened. Just chain it to your normal
bindsym $mod+h split horizontal; mark lastsplit
bindsym $mod+v split vertical; mark lastsplit
Now you can move a window to the mark by one of these two methods, depending on your version of i3:
Since version 4.11 you can use the following to move to a mark.
bindsym $mod+m move window to mark lastsplit
for older versions there is no direct way to move a window to a split. But there is a workaround using the scratchpad:
When 'unfloating' a window, i3 drops it where it would also create a new window: just next to the focused (and tiled) one. So the window with the last split has to be focused immediately before disabling floating:
bindsym $mod+m mark movethis; move scratchpad; [con_mark="^lastsplit$"] focus; [con_mark="^movethis$"] scratchpad show, floating disable
$mod+m the currently focused window will be moved to the last split. You can even move multiple windows to the same split.
Also, some binding to just set the mark, without splitting could come in handy.