You could use sklearn.model_selection.GroupShuffleSplit, which accepts a groups argument in the split method to create the split indices based on this groups (your participants).
Once you have the indices, you could use Subsets to create the different Datasets.