1. Player can pre-write maps into the code, and have one of them randomly be picked to be used.

SwapMaps would handle that one.

and/or

2. Random map generation that supports icons that are meant to be used together (such as a 2x2 turf icon)

There are several map generation libraries; Shadowdarke did a good one, and Jp did another. A lot depends on what sort of map you want to generate though. As for linking the turfs together, that's probably better to do as an after-step. There are some good resources on the developer page regarding autojoining.