Improve skip take shuffling and distributed

set the right behavior of skip/take depending on whether it's called after or before shuffle/split_by_node