I can take a look at this next year, right now I don't feel much like taking more tasks on my desk.
Just to clarify the internal structure from IL-2's point of view:
Turrets are "created" when the aircraft mesh is getting loaded.
The game just looks for "Turret<x>A_D0" and "Turret<x>B_D0" inside the hier.him, with "x" going from 1 to 9.
As soon as these two are found, a Turret is created, and as soon as these two are not found, the game stops searching.
So if for instance your hier.him has "Turret1A_D0", "Turret1B_D0", "Turret2A_D0" and "Turret2B_D0", then this makes two turrets.
If in contrast it has "Turret1A_D0", "Turret1B_D0", "Turret2A_D0" and "Turret2C_D0", then this makes one turret.
And if it has "Turret1A_D0", "Turret1C_D0", "Turret2A_D0" and "Turret2B_D0", then this makes no turrets at all.
The number of pilots solely depends on the defined number of pilots in the fmd file, the hier.him has to have their regarding Pilot meshes, otherwise loading the plane fails.
The problem of these planes is that when they crash, the game tries to damage the turrets, then kill the pilots (and thereby the gunner) and finally destroy the aircraft.
Since at the first step the code already bails out with an exception, step 2 (kill pilots) and 3 (destroy aircraft) never gets reached, that's why the planes keep floating.
When you hit the ground very steep, the order might change because a vital part of the plane (like the tank) might get damaged to a degree where the game destroys the aircraft automatically, already before the turret or the pilot(s) get hurt.
They will get hurt later (and throw the same error), but then the plane is already gone.
Best regards - Mike