How to unwrap this correctly?
The straw in the thatch texture is lying vertical from top to bottom, so we need to try and straighten out the Uv's so that they are aligned (more or less) to this texture.

In the following example the roof has a Mirror modifier acting along both X and Y axis. Also, to avoid unnecessary horizontal seams, the roof is being unwrapped as a single UV island. The roof has already been assigned the thatch texture.
Start by selecting everything and Unwrapping:


In the UV Editor we need to align the edges to the X or Y axis. This is done by selecting a single edge loop, opening the UV Contextual menu with the right mouse button and choosing the appropriate axis to align to:


Once the Uv's are straightened, in the 3D editor check for obvious problems in how the texture is now mapped onto the model:
 

These problem areas can be alleviated by adding seams and unwrapping a second time. Before Unwrapping remember to Pin the vertices we don't want to be moved. (Pinned vertices are marked in red in the UV editor):




The final part is to scale up the UV island and move the 2D vertices about by hand until you are happy with the mapping. Keep in mind that when UV unwrapping curved surfaces its always a compromise between stretched/squished textures and having lots of seams: