Isn't rectform supposed to always take the principal branch?
Here's an example where depending on whether we substitute concrete values before or after applying rectform, we get a different result:
(%i1) domain : complex$
(%i2) f : sqrt(x * y)$
(%i3) subst([x = -1, y = -1], rectform(f));
(%o3) -1
(%i4) rectform(subst([x = -1, y = -1], f));
(%o4) 1