You are correct, the LookbackAPI figures out what field belongs to what hierarchy type.
PortfolioItem has field "State" and HierarchicalRequirement has field "ScheduleState". Just to illustrate your answer for the benefit of other users here is a screenshot of results fragment from a query that specifies two types "_TypeHierarchy":{$in:["PortfolioItem","HierarchicalRequirement"]}
:
https://rally1.rallydev.com/analytics/v2.0/service/rally/workspace/1111/artifact/snapshot/query.js?find={"_ProjectHierarchy":12352814790, "_TypeHierarchy":{$in:["PortfolioItem","HierarchicalRequirement"]},"__At":"2013-08-01T00Z"}&fields=["_TypeHierarchy","_UnformattedID","ScheduleState","State"]&hydrate=["_TypeHierarchy","ScheduleState","State"]