How do I maintain an active list of ZigBee devices in a HAN?
In HA all devices must support the basic cluster. So you 'could' broadcast a read attribute to a basic cluster mandatory attribute. However this is not guaranteed to work, as broadcasts are not acknowledged at any level. 

For this same reason you can not rely on Device Announce to build up you device list. In the past I have used the the security manager, most stacks (I have used this in TI zstack with zdoCBFunc[ZDO_TC_DEVICE_CBID]) offer an API/callback to allow the application to know when the Trust Center has given out a key, if this does not happen then the device can not be on the network. This means that your device list built up when devices join the network is definitely capturing all devices. After that you can use read attribute of one of the mandatory basic cluster attributes to 'ping' the device to see if it still on the network.

If you can not access a trust center API to know when the network key is given out then you should use the ZdoMgmtLqiRequest. You should not rely on device announces as there is a possibility they will never be heard (due to various rules and network parameters on rebroadcasts and also the network size). You should not rely on any broadcast mechanism for this including broadcasting a read attribute. The only way I know of doing this is by unicasting the ZdoMgmtLqiRequest, first to you self, then you neighbors and then you neighbors neighbors. Painful, but guaranteed to work and if devices do not reply then they are not there anymore.