You mean that A_i is a partitioned matrix [A | B_i] or a product A * B_i?
what is the size of the matrices A and B_i?
for example rank(AB_i) <= min(rank(A), rank(B_i)), not sure where the additive property you state comes from.
In any case, I don't understand why you are computing Q^(-1) A_i P^(-1) i, since Q iand (thin) P are orthogonal only need take the transpose. Furthermore, since AP = QR, Q^(-1) A_i P^(-1) = Q^(-1) [A B_i] P^(-1) = RB_iP' (or similar for partitioned matrix). So the transformation doesn't help you, on the contrary, R is already available with its rank, so you still need determine the rank of (B_i)..
If A_i = [A | B_i] then you could compute the rank of A and the the ranks of only the B_i's with colPivQR. but you still have to deal with the formula in the reference above
If A_i is a product A*B_i, a strategy could be computing If A_iA_i' and then get the rank by computing only its eigenvalues or with LU decomposition, which could be faster then colPivQR, but I am not sure.
In my opinion with such small nrow and ncol there is no point in inventing algorithms to save few flops, unless you have some properties of the A and B_i matrices you can exploit. .
I hope this helps, Marco