This, I’m fairly certain is doable. You need the short_names of the categories to be different, but I know we’ve set-up a weblog for a client, where categories such as long distance and credit have appeared multiple times, for example: telephone ->long distance and travel ->long distance. Why don’t you just enter the categories in and see if they work. Categories are keyed by category_id not category_name.
But my thought is, I’m not certain what other repeats come up, but if they happen because of the same issue (i.e Habitat not being a bird or Food not being a bird), then maybe those items should be in a different place, such as a custom field or related entry. For example, if you are going to take the time to write up a full entry on the habitat of eagles vs parrots, then why not have a weblog of habitats, and just relate the entry to the proper bird species. Or else, if your not planning a write-up, but just want to specify habitat type, like: woods, mountains, north america, whatever. Than you could probably get away with a custom field in the actual entry.