I havent tried it yet, but your code construction suggests to me, you could simply move the fieldset up in the hierarchy a bit, and keep your divs inside the fieldset. Have you tried this, and if so, what went wrong?
To be clear, I'm talking about something like this:
<!-- moved the headings out: the CSS for this would have to be created -->
<fieldset class="repeating_missileweapon"> <div class='inventory-grid-section inven-missileweapons colored-grid'>
<div class="missilecontainer-grid">
<div class="missileweapons-grid">
<input type="text" name="attr_missileweapon_name" class="skill-value">
<input type="number" name="attr_missileweapon_ml" class="skill-value" value="0">
<input type="number" name="attr_missileweapon_ammo" class="skill-value">
</div>
<div class="missile-ranges-grid">
<!-- Default values for medium projectile and range class 2 firearm. Totally different for bows and suchlike! -->
<!-- nbsp might be replaced by a check box to hide that range-data (e.g. for weapons that can't fire so far) -->
<div class="range-data">
<input type="number" name="attr_missileweapon_4_mod_ml" class="skill-value" value="15">
<input type="number" name="attr_missileweapon_4_mod_dmg" class="skill-value" value="0">
</div>
<div class="range-data">
<input type="number" name="attr_missileweapon_8_mod_ml" class="skill-value" value="10">
<input type="number" name="attr_missileweapon_8_mod_dmg" class="skill-value" value="0">
</div>
<div class="range-data">
<input type="number" name="attr_missileweapon_16_mod_ml" class="skill-value" value="0">
<input type="number" name="attr_missileweapon_16_mod_dmg" class="skill-value" value="0">
</div>
<div class="range-data">
<input type="number" name="attr_missileweapon_32_mod_ml" class="skill-value" value="-10">
<input type="number" name="attr_missileweapon_32_mod_dmg" class="skill-value" value="-1">
</div>
<div class="range-data">
<input type="number" name="attr_missileweapon_64_mod_ml" class="skill-value" value="-20">
<input type="number" name="attr_missileweapon_64_mod_dmg" class="skill-value" value="-2">
</div>
<div class="range-data">
<input type="number" name="attr_missileweapon_128_mod_ml" class="skill-value" value="-40">
<input type="number" name="attr_missileweapon_128_mod_dmg" class="skill-value" value="-4">
</div>
<div class="range-data">
<input type="number" name="attr_missileweapon_256_mod_ml" class="skill-value" value="-99">
<input type="number" name="attr_missileweapon_256_mod_dmg" class="skill-value" value="-6">
</div>
<div class="range-data">
<input type="number" name="attr_missileweapon_512_mod_ml" class="skill-value" value="-99">
<input type="number" name="attr_missileweapon_512_mod_dmg" class="skill-value" value="-9">
</div>
<div class="range-data">
<input type="number" name="attr_missileweapon_1024_mod_ml" class="range-data-ml skill-value" value="-99">
<input type="number" name="attr_missileweapon_1024_mod_dmg" class="skill-value" value="-12">
</div>
</div>
</div>
</div>
</fieldset>
This doesn't contain headings - a div above the fieldset containing the headings would be good.
Have you tried this?