"Not sure what code proposed Navi Mumbai International Airport will take, and whether that will result in a new code for BOM."
Perhaps RUZ for the existing Santa CRUZ (or whatever it's called this month!) airport and PVL for the new airport at PanVeL, with BOM retained for the city code?
"So my guess for MME is that the double M is either superflous, or it is for Middlesbrough + Middleton, both of which could have used ME."
Exactly, Middlesbrough-MiddlEton St George is named after the adjacant village and former Royal Air Force base.
"I should also point out that as someone who has reluctantly had to do a certain amount of database programming in my time, GLA makes no sense."
It could: GLasgow-Abbotsinch, named either after the former Royal navy airfield or the nearby pub of the same name. Agree that it can be confused with the city code.
"Some do change and you can see the politics in this one:
Salisbury in Rhodesia = SAY (If memory serves)
Harare in Zimbabwe = HRE"
Maybe the "HRE" code was available at the time of the changeover. "SAY" could have been recycled for the new "London West" (Boris 2) airport on Salisbury plain, except that it has gone to Siena, Italy.
In fact a lot of the stranger codes can be explained by what is available at the time.