Will an upgrade from 2015.2 to 2017.1.2 or higher freeze the query plans from 2015.2? Is there some minimum source version where this will work?
You must be starting on a version that supports Frozen Query Plans. In order to freeze a plan the query compiler needs to save some internal information so it can regenerate the same code on recompile.
2016.2 is the first version to support frozen plans.
Any upgrade from a version of 2016.2 or higher will automatically freeze all query plans. This means you should see the exact same SQL performance after upgrade. No more surprises with a query running much slower on the new version. Of course that mean no improvement either until you test the plan to see if it has changed.