I solved the problem by only calling Show if the Popup wasn't already showing by using this code in the OnMouseMove event:
if not FPopupShowing then
begin
PopHint.ShowPopup(False);
PopHint.BringToFront;
FPopupShowing := True;
end;
FPopupShowing is a local variable of the form. It is set to false when X, Y are no longer within the ranged of any hint collection objects. This disables the flickering.