IMO, cross-validation is flawed by the definition. So, If possible, test set should be fully separated from  training loop. If not, then I’d choose scenario 3: run outer loop picking test subset, then run inner loop on remaining data training model via cross-validation.
Yet, I’d look first into possibility of generating additional samples, either fully synthetic or augmented.