Factory for the train-on-training / evaluate-on-validation fitness used by optimize_panel() when fitness_mode = "within_cohort_val". Split out to keep the main orchestration function readable.