Yo creo que la idea que tienes es la correcta. En
mi página hay una componente que hace lo mismo pero para un ComboBox. Sin embargo, pienso que puedes usar la misma idea para el ListBox.
Básicamente tendrías que manejar el evento OnMouseMove del ListBox (en mi código correspondería al método ListWndProc) en donde desplegarías tu propio Hint con un objeto THintWindow (en el método DisplayHint de mi componente puedes ver cómo se usa THintWindow).
// Saludos