Referrals are typically returned when you request an object in a location where it is not actually located but the server thinks it might know where the object is. That typically happens as a result of specifying an incorrect path.
First off, I recommend you avoid using IP addresses for connecting to domain controllers. It can cause a variety of problems (such as broken Kerberos authentication) and should never be necessary since DNS really needs to be working for AD to work.
The next thing to do is to check all your distinguished names and ensure they are all correct. This is the most likely problem.
Additionally, you don't need to invoke GetInfoEx or GetEx. RefreshCache works fine for this to load the property cache and then the value will be available in the PropertyValueCollection. However, that's more of a tweak and not related to the current issue.