The pdftron::PDF::PDFViewCtrl::PaintEvent is what you are looking for, as it provides the hDC element to write. Included in that event is the m_pdfviewctrl_processed boolean, so when that is true, PDFNet has already drawn, so you can then overlay what you want. The even also includes the window id.
Use PDFViewCtrl::SetCustomEventHandlers to register for this.
As for e_custom, you can use this to setup your own tools. If you want more then one custom tool, then simply set up your own parallel ids, and use them with e_custom.
As for general refresh, you can pass a Rect to PDFViewCtrl::Refresh so that only that area is updated.