The rows are not being invalidated so that is why you do not see the selections. Try this code in your GridControlBase class.
int oldRow = -1;
protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e)
{
int row, col;
Point pt = new Point(e.X, e.Y);
PointToRowCol(pt, out row, out col);
Selections.Clear();
Selections.SelectRange(GridRangeInfo.Row(row), true);
if(oldRow > - 1)
this.RefreshRange(GridRangeInfo.Row(oldRow));
oldRow = row;
this.RefreshRange(GridRangeInfo.Row(oldRow));
base.OnMouseMove (e);
}