The problem with a IsFavouriteItem flag on the item table, is that relationally, there's no way to enforce that only ONE item for a particular parent has that flag set. As a result, there isn't a straightforward way to map that to a single Item reference (as far as I know). I think you'd have to implement it as you've suggested, with a private list of favourite items, which should always have a maximum of one item. It would be mapped with a where clause.
As for the LastItem, I think you could do something similar again. A where clause should let you filter the items so only the last item is returned. Again it would be stored in a list of max length 1. At least this way, you don't have to touch the Items list and force it to be evaluated.
I expect that there is a way to avoid having these private length-1 lists, but it would involve using some of NH's lower level hooks, such as a custom Tuplizer.
And of course, as I mentioned in the previous email, a different schema would give you different mapping options.