Is there a way to prevent two 'home' addresses for a contact?
The form validation in the user interface will prevent this. So there's no need to have a setting that would prevent it.

But the API does not prevent it: you can,  for example, create a second Home address for a contact through the API.  There is no API configuration or option to prevent this.

Thanks @Coleman for pointing this out.