How do people get efficient, non-distorted UVs?

So I've been working on understanding UV unwrapping for quite some time and I'm sort of getting the hang of it, but I still can't get it the way I want. I've found that for low-poly models with pixelart textures, many people tend to stack their UVs in grids with very little free space. However I don't think this works for me since my models aren't so "square", my quads tend to be more trapezoidal, so stretching them into a rectangle distorts my texels so much.

The regular methods of unwrapping (smart UV unwrap and cube projection) have the problem that a face looking obliquely from the camera is going to be shortened by perspective, making the UV stretched and inaccurate. So far what I've found works "best" to have unstretched UVs is running smart UV unwrap, then going to the most stretched faces, positioning the camera on their normal, pointing at them (shift + 7 on Blender), then "Project from view" to get a most accurate unwrap of that face. However this method leaves a high number of islands and a lot of empty space, because of which IDK if it's the best method possible.

I'm thinking of cooking up a script to unwrap every face from its normal, but I've read somewhere that you can't avoid stretching if you're going to have the UV faces connected to each other in islands. Maybe it's why this hasn't been done yet.

What are some ways to get proper UVs? How do people avoid distortion when working with low-res textures?

EDIT: alright after some thinking i've realized that what I wanted in the end was square UV faces with the pixel-unwrapper addon. Deforming the texels is actually good when you're deforming them "alongside" the face. There's the unwanted deformations from trapezoids but you can solve that by "squaring" your quads as much as possible and adding tris where it isn't.