refine _get_isolated_creds

when exceptions.Duplicate is thrown in _get_isolated_creds, it
should be handled as the following:
1. reuse the existing tenant or user if it's allowed.
2. regenerate tenant name or user name, and try to create it again
until it's successful, shouldn't just raise the exception.

Change-Id: I69c4026aa4c32d4822342da0ac3f7243c0db6fd4
Merge "refine _get_isolated_creds"