Unfortunately a SharePoint 2013 search result returns something which is not compatible with a TaxonomyFieldValue constructor.
If you pass a search result to a TaxonomyFieldValue ctor you will get the following error message: The given value for a taxonomy field was not formatted in the required ;#| format.
What I do get from a keyword query looks like that:
GP0|#d86df779-4fcc-45b0-a96e-8caaa84b4b1c;L0|#0d86df779-4fcc-45b0-a96e-8caaa84b4b1c|MyTermLabel;GTSet|#4b6fe410-c992-43c9-8149-80851a5b93b0
The last guid is the termset ID
The middle guid is the term's ID (label is "MyTermLabel").
I did not yet figure out what the first ID is. It is neither the Group nor the TermStore nor a reference to the taxonomy hidden list. I'm still in the dark on this one.
Before I come up with something crazy to extract terms from this search result string - is there any built-in functionality?
Update: There is some information on the syntax here: http://technet.microsoft.com/en-us/library/jj613136(v=office.15).aspx But this describes search query options rather than "why is my result looking the way it is".
Update: Stumbled across this thread on SE How to parse the result type containing managed metadata. The suggestion is to use the search result value with the TaxonomyFieldValueCollection ctor(). This is simply wrong! As with the TaxonomyFieldValue ctor() this is NOT working! Even if you strip away all the GP0 and GTSet fragments.
Answered my own question - moved the sample code to a separate answer posting to be able to put a green checkmark on it - for others to see there's a possible solution inside.