(As nobody answers this one quickly, the answer should be quite straightforward or extremely difficult...) I will be trying to make a similar functionality, based on 'directory' or 'address-book', and I will post my findings here when ready.
The disadvantage of 'directory' is that it does not list entries without an e-mail address - or non-members for that matter. As far as I know, 'address-book' is not public. (Some changes to the data model are likely to be necessary any way, such as adding extra rows in the tables connected to it.)
Besides, if you have found the answer in the meantime, I would like to hear it as well. Thank you!