While basing traits on specific things that happen in battle would be better for the storytelling aspect of things, I think it would be extremely difficult (if not impossible) to make the gameplay work well.
You mean that when it becomes too granular, there would be incentives to do play in a weird way to get optimal chances at good traits, like all the Elder Scrolls player skill-levelling-by-usage shenanigans?
Do you guys think change 4 would do a good job of accomplishing the same goal?
It would probably be even more frustrating to be punished by the RNG if you know you have a higher chance of getting bad traits after a string of good ones, especially in the endgame portion you mentioned when ideally the player is trying to roll perfect ships. Although knowing you are more likely to get good traits after a string of bad ones would soften the blow.
I'm not sure I can clearly explain my thinking, but:
Overall, your change would work out to roughly similar end results (at max traits, most ships have a list of upsides and downsides), but the in-game experience of playing the game means that you get each trait change one by one, so it feels more like you are getting punished by the RNG when you get a bad trait. Under default .ini settings which players may not look at and hcange, this may be quite frustrating.
I personally like the idea of having fewer traits, but with upsides and downsides, because then it would soften the blow of winning/losing the RNG roll at every step.
If each trait has a hardcoded upside and downside, the upsides and downsides could also be more thematic (although perhaps then each ship will have fewer individual traits):
E.g. "the [HMS Invincible]'s crew is obsessed with gunnery speed, to the extent that they stack ready ammo outside of the magazine and leave anti-flash doors open. +rate of fire, -hull integrity"
And narratively it would feel more like a specialisation or a character quirk. Some traits would be generally good and others generally bad (there would also still be room for purely good/bad traits - perhaps more strongly tied to very good/bad performance?) so you could still assign traits based on the positive performance of the ship, but it would be fuzzier and less a clear cut win/loss when the dice roll doesn't go your way.
Maybe you could actually add supply cost reductions for negative traits? That would make them still permanent D mods, but at least they would come with the same benefits.
That might sometimes be unthematic though, although it might sometimes be very thematic (lazy crew: might get -max CR, supply costs reduced :p !).
Generally, I don't think that bad traits should push towards just being unremovable d-mods, especially if you consider the experience for one-off unique ships, like IBBs/AE Vow/BB Sparrowhawk.