The whole object consists of one connected mesh instead of multiple mesh parts, which means you have to use many seams to part it out for UV’s. As everything is in one object, you can’t use modifiers, linked duplicates, nor instances to help either.
There are also a lot of n-gons (faces with more than 4 sides) which can easily distort with normal unwrap. Some of those are also concave which are almost guaranteed to distort UV’s and texture. Distortion might also happen in the geometry for both concave n-gons and quadrilaterals because of triangulation,
Only one face unwrapped at a time.
A. unwrapped with normal unwrap, U -> unwrap
B. projected from view, U -> project from view
All faces in the right viewport are n-gons. One way to find them is with select menu -> select by trait -> faces by sides, and changing find criteria to greater than 4.
Even when using triangulate modifier to make the triangulation consistent between the two, it distorts because the unwrap got distorted. One UV vertex is on top of another.
Unwrap tries to put the UV coordinates in such way that there is the least amount of distortion on the faces, and this one doesn’t open flat without distorting the faces. For it to have no distortion at all, you’d have to add seams on edges where the geometry makes a turn, separating the straight sections.
The UV islands that result from those don’t have straight 45 degree angles on each side, they’re stepped instead because of the profile.
If it was a real object and made of wood, it would most likely also have a cut on each turn. That way it’s easier to keep the wood pattern more consistent on a large area and easier to make, which is also what you’re trying to do for a virtual object.
Get rid of n-gons or at least know what you’re getting into when leaving them. Using multiple mesh parts or multiple objects may help replicating the work you do on one part of the model. Mirror modifier or symmetrize tool could also be useful.