InfoPath I believe has a limit to the amount of items it will pull back to a dropdown. when you cascade you parent dropdown should be the only one that populates on form load or by some action. the next child should only populate or query the data set after your values changes, it is not blank and you can pass a filter to the child. same for each additional child. I did find performance issues with large dropdowns. I went with a stored procedure, which queried the data and filtered it before it reached the form.
although you have 3000 items for regions, once filtered you should not exceed 1000. I believe this is the limit.
Are you pulling this data from a database or sharepoint?