If you have the image sequence as array-like shape vid = [w, h, c,  n_frames] you can use np.split and specify the indices to extract random cropped sequences.
random_sequence = np.split(vid, indices_or_sections=[10,20,45,60,...], axis=3)
For this, you have to load the whole sequence into memory, which might be a bit memory-heavy.
Otherwise, you can just define t1 and t2 in __getitem__ as:
t1 = random.sample(range(0, len(sequence-max_n_frames_wanted), 1)
t2 = random.sample(range(0, len(max_n_frames_wanted), 1)

and then load the frames sequentially in a for loop from t1 to t2 and use torch.cat in the end as you do.
Hope this helps.