You can handle the SelectionsChanging event and adjust e.Range if the selection intersects a coveredcell. Here is a try at this.
private void gridControl1_SelectionChanging(object sender, GridSelectionChangingEventArgs e)
{
if(!e.Range.IsEmpty && e.Range.IntersectsWith(GridRangeInfo.Row(0)))
{
GridRangeInfo range = e.Range.IntersectRange(GridRangeInfo.Row(0));
range = this.gridControl1.CoveredRanges.FindRange(0, range.Left);
if(!range.IsEmpty)
e.Range = GridRangeInfo.Cols(range.Left, range.Right);
}
}