Maximum rows to partially distinguish all the columns
This is not an answer, only an extended comment on a possible transformation of the problem (hope it is correct :-).

Each row can be "mapped" to a $n \times (n-1) / 2$ "extended" row. Each element of the extended row represents a pair of elements in the original row and is set to 1 if the two elements are different, set to 0 if the two elements are the same.

For example:

row_i = 10011  
        ^1100   (*)
         ^011   
          ^11
           ^0

extended_row_i = 1100 011 11 0

(*) note that in building the extended row, when the current bit (marked with ^)
is 0, the remaining bits are just copied and when the current bit is 1 the
remaining bits are inverted


We can extend each row and obtain an "extended" matrix. For example the matrix:

10011
01101
00011


Becomes:

1100 011 11 0
1101 010 10 1
0011 011 11 0


And the original problem reduces to find a submatrix of the "extended" matrix with exactly one 1 in each column.