Leaf nodes for averages
OK, so I found AN answer eventually, though I'd quite like a more elegant solution.

What I'm doing is performing an iif statement to check whether there are any [Person].[Person] children available in the current context. If there aren't, then assume we're looking at this by individual [Person].[Person] members and use currentmember instead.

The tuple formula looks like this:

AVG(iif(Count([Person].[Person].children, EXCLUDEEMPTY) = 0, 
    [Person].[Person].currentmember, [Person].[Person].children), 
    [Measures].[Hours])