I believe you're over thinking this - you'll always find a model that performs best on a certain unique_id but worse on another than another model. By trying to select for every unique_id the best model from cross-val, you are extremely likely to overfit and perform worse in a true test setting.
Bottom line: keep things simple. Just cross-val on a few models using hyperparam search, select the best model, create predictions. This is much more likely to lead to good test results than doing a micro optimization per unique_id.