About the question of considering tactical combat in Col, I think Raystuttgart had actually looked into this at one point and found a BtS mod that was trying to implement tactical combat; however after looking further there were apparently a lot of technical problems with this approach and he ended up concluding it would likely not be feasible given the engine,
My experience has told me that plenty of people make statements on the game engine on the forum regarding how it works and what is impossible. Sadly the accuracy isn't as high as I expected when I started modding and I have found plenty of false information. Often it is hard to spot because the writers tend to believe it themselves and overall it fits, but if you go into the details, it no longer adds up. Besides proving something is possible is relatively easy. You just do it. End of story. However proving that something is impossible is much harder. Even if your idea is impossible to implement, somebody else might get a completely different idea for an implementation, which does more or less the same ingame, but is possible. It is tricky to proof you can't reach the same goal using some idea nobody thought of yet.
From my knowledge of the engine, I haven't found any serious flaws in the idea to implement a combat map. Simply put, it's a matter of tricking the exe to think the game now has a 16x16 map (or whatever the combat zone is) and then mark the entire screen dirty. Once combat is over, CvGame::getMap() (or whatever the pointer access function is called) then returns the pointer to the real map again. This switch once again marks the entire screen dirty and force redrawing everything to delete cached graphics from the combat.
This way the actual combat can be a 100% DLL change, which makes it doable. We will encounter issues like units moving without moving on the real map and stuff like that, but they are DLL issues and can be fixed with the correct thinking, possibly with a bit of backup/sandboxing certain data from CvUnit. None of the problems with be in the realm of inaccessible functionality in the exe.
I think the backup system would be something like making a struct, which contains a pointer to a unit and original data, such as movement left, facing direction and whatever. We then add a list/vector of that struct and once combat is over, that list is looped and the units are restored to their original data. (TODO: figure out what to do about units, which died in combat). If we back up data we aren't supposed to change during combat like this, we can then move on to change those numbers during the combat and less special combat code will be needed.
Network games and taking human turns at the same time could be an issue. I suspect everybody would have to watch all combat, possibly on a map, which will be all black (not revealed) for teams not present in the combat. This will require some thinking, but so far this is the only real issue I can see in the game engine.