Ciao
In linea di massima la classe va bene. Ti consiglio solo di rendere la bitmap privata e creare una proprietà readonly.
Per quanto riguarda l'alto uso di cpu, è, come hai detto tu, dovuto al fatto che reimposti l'immagine ogni volta che muovi il mouse. Puoi evitare di farlo ogni volta impostando l'immagine solo quando la posizione del posto è effettivamente cambiata (cosa che puoi verificare dal valore di ritorno della tua funzione HighlightFromCoords:
If m.HighlightFromCoords(e.X, e.Y) Then
PictureBox1.Image = m.MapBmp
End If
Luca