Hi there,
As Marcus mentioned before, at the moment geographical targeting is country based, not per continent, so you're correct: hreflang works for languages or / and countries and the geotarget option in Google Webmaster Tools (when you're not using a ccTLD) is only for countries.
So there are really two alternatives: language targeting (although each language is different in each country) or country targeting (which is the ideal in order to connect with each audience, localizing the content as maximum and leveraging all types of local characteristics).
With language targeting you will avoid having content duplication issues (since it will be only one English or one Spanish version), nonetheless, as I mentioned, it can be tricky: The Spanish spoken in Spain is different than the one from Mexico and each other Latin American country. Seasonality and currency are different. People's culture, tastes and local characteristics too. So language based versions might serve to have a "generic" approach to these audience but not really targeting them as specific markets.
On the other hand with country targeting if you have two English versions you can refer each one to the appropriate country with hreflang, ccTLDs (if you use a generic domain, then with the geotarget option in Google Webmaster tool) and then by doing local link building focused on each country, to enhance the popularity of each version there. This would be the recommended approach. If you can't enable many countries because of resources restrictions then start with the most important ones.
More over, from what you mention about targeting Europe as a whole, even if you enable a domain of the type: www.yourbrand.eu for Europe, it is likely to be treated as a generic domain as Google specifies here, and then inside this domain what you would really have --as I understand from your description-- are language versions targeting Europe in General:
The issue comes when you have the same content in English for your American audience in www.yourbrand.com or in Spanish (for Spanish speakers in the US) in www.yourbrand.com/es/ that could cause a content duplication issue with www.yourbrand.eu/ and www.yourbrand.eu/es/.
If this is the scenario, then the best you can do is to differentiate the content, changing them by giving signals that one is targeting the US audience and the other, well, what would be English speakers in Europe. But again, there's no real support or straight-forward solution for this scenario since beyond what Google supports, is not "natural" or the best alternative from an "international audience targeting" perspective.
If you have any other information that you think would be relevant to give you additional recommendations please let me know.
I hope this helps!