I'm not a pro or anything, so maybe there's a better way than this, but I haven't come across it yet....
In my own experience, the UV mapper can only figure out so much. The rest is up to you. Instead of relying on the built-in mapping functions that are supposed to do it all for you, you will need to use a little selective face-choosing and placement within the UV editor. This can be tedious, but it seems to be the only way to do it and get acceptable results.
You can move the selected faces around in the UV editor, as well as scale and rotate, just as you do in the 3D viewer. That will help you to adjust textures on faces so they match up.
If you start with mapping the most squared faces but exclude the others, you can then minimize the work you need to do. With the remaining faces, you will now have enough room in the UV editor to organize them into the appropriate arrangement while aligning them to the other face's textures.
With the form that you're wrapping, there will be some mismatching where they converge together. That can't be helped.