Ammunition should have a base penetration value that is then further modified by the firearm to create a final penetration value. This would more accurately simulate the combination of a bullet's attributes (projectile grain weight/density, powder load/quality, projectile shape) and the firearm's attributes (bolt action vs semi/full auto mechanisms, barrel length, gas tube vs impact bolt cycling). This would allow the same ammunition to have different final properties and make firearms be even more unique and allow for barrel length modifications impact more than just accuracy.
An example could be 9mm ammo in a Glock, Vector (5.5"), Vector(16"), and the MP5:
The hypothetical ammo has a base pen of 20.
The Glock has a 4.5" barrel which adds +15% pen to the ammo, no matter which 9mm round you load. In this case, you're getting a final value of 23 penetration per round.
The Vector with a 5.5" barrel will add +19% pen, giving a final value of 24 pen.
The MP5 has multiple barrel lengths but max out at 8.5" which could provide +34% pen to the final value. Here you get a 27 pen value per bullet.
Finally, the Vector with a 16" barrel would have a pen modifier of +57%, giving a final value of 32 pen but also a ergo/recoil penalty as well.
Add into this the fact that you can then give each firearm/barrel length a velocity, recoil and ergo modifiers that make the platform more meaningful than 'what's its rate of fire and lowest recoil value' before you slap the 'best ammo' into the magazine.
I mean, bolt action rifles should have a pen and velocity modifier much greater than auto-cycling bolts, as 100% of the propellant's energy is focused towards firing the projectile out the barrel instead of having to cycle the bolt.
I'm not sure how the game's code is set up but it shouldn't be that hard to associate class values to make this happen and it could be a very good thing for the game.