The reason for the behavior you are seeing is because when you enable data linking (via linkdata) and then select data points, you are effectively selecting the rows of the input matrix. You can see that if you open the variable editor:
plot(Y, 'k.', 'MarkerSize', 8);
After running that code, if you select points, you will see the corresponding rows highlighted in the variable editor.
I don't believe there is a way to disable that without either plotting the data as a vector or splitting the data up into one variable per column of the original data.
You mentioned "speed reasons" for why you are plotting all the data together in a single matrix, however the way you are plotting data in a matrix creates one line object for each column of the matrix, and it won't be substantially faster or slower than calling plot 20 individual times on 20 vectors. If you plot the data as a single vector, you will get better performance (because you will get a single line instead of 20 separate lines) and I suspect you will get the linking behavior you expect. The only downside is that to get linking to working you need to store your data in a variable with the vector.
This code will produce the same picture as above, but might be a tiny bit faster (depending on the size of the matrix) and will allow you to select individual points.
plot(X(:),Yvec, 'k.', 'MarkerSize', 8);
If this code doesn't do what you are trying to do, can you explain in more detail how you are using data linking?