Okay, that sounds like a good solution! And since you are suggesting it, I assume the answer to my question is that augmenting the validation set is a bad idea?
Actually, train_test_split works really well with how I defined my dataset class! I can just do this, and it ends up solving my augmentation problem, and I think is a little cleaner:
train_df = pd.read_csv('data/train.csv')
X, y = train_df.iloc[:, 1:], train_df.iloc[:, 0]
x_train, x_valid, y_train, y_valid = model_selection.train_test_split(X, y)

trainset = MNIST(pd.concat([x_train, y_train], axis=1), transform=transform)
validset = MNIST(pd.concat([x_valid, y_valid], axis=1), transform=transforms.ToTensor())

trainload = DataLoader(trainset, batch_size=32, shuffle=True, num_workers=4)
validload = DataLoader(validset, batch_size=32, shuffle=True, num_workers=4)