I'm stuck with this one. I made a shotgun model using the sub-d workflow. I intended to make high and low poly models so I could bake all the details and shading and sell this model on stocks.
Here is how it looks:

After I tried baking some parts, testing if everything would bake without errors I understood that the low poly model is too low.

I really want this model to be high quality and avoid any baking errors like the one above. I understand that this error comes from the lack of polygons and the way the subdivision modifier works - it shrinks the original mesh.
For now, I cannot find any non-destructive ways to add more polygons to complex objects. All the parts already have bevels which were hard to make on some of them. The subdivision will surely destroy the topology, and I don't want it to smooth it on flat surfaces(adding creases doesn't help). Also, applying subdivision gives me a result that is not representable for showing the topology.
Is there any other way to add more polygons without making the model from scratch?
I'd love to know what workflow is actually used in the game dev industry.
Should the hard surface modeling rely on sub-d methods or do you just need to create three models: low poly as final version, low poly as a base level of the subdivision, and high poly that is a subdivided base?
Trying to subdivide only some polygons of the mesh doesn't help:



