R, 91 85 8484 82 bytes
Edit: -1 byte thanks to pajonk, then -2 bytes thanks to Giuseppe
function(v,l=sum(v|T),`?`=sample,m=(l:0)[!(02:(2^l-2)?1)%/%2^(0:l)%%2]){v[m]=v[?m];v}
TIO link includes (reciprocal) distribution of shuffle_subsequence(1:3)
to check conformity to tsh's calculations.