Try to isolate sections that don’t require other sections and send those first. Then ones that require only those.
For example, when working on Z-levels, I first sent the mapgen/map loading/saving part. It didn’t change mapgen, just optimized it for z-levels.
In your case, you may want to first send the changes that don’t change anything in the game, just prepare for other changes.
For example, isolate just the renames, class/struct changes, direct array reads into getter functions etc. This would be the first PR.
The second would be submap drawing - here you’d change the single tile type into arrays (which at the moment would hold only 1 element each).
Then you could break up “composite map tiles” into multiple tile types. For example, “wasp infested house” into “house” and “wasp infestation”.
Finally you’d have the overmap generation: you could break it up into phases - first terrain phase (ground/water/forest), then cities, then overlays (like wasps).
Don’t be afraid of making a separate branch and selectively importing the changes. Usually the longest part of writing source code is designing it. If you have things figured out, you’ll reintegrate them (copy+paste+adjust) very fast. Starting over again and selectively importing changes will probably improve the quality of your code too.