1. Inheritance creates dependencies on their parent class
2. Multiple inheritance is hard
3. Inheritance makes you vulnerable to changes in self-use
4. Hierarchies are awkward for expressing certain relationships
All true. But likewise, functions introduce dependencies on their arguments, and data structures introduces dependencies on their fields. You must consider your dependencies carefully when designing any software interface.
The task of software architecture is not to go around categorizing everything into a taxonomies. Inheritance is just one tool in your software interface toolbox.
5. Reference semantics may result in unexpected sharing
This has more to do with reference semantics than objects.
6. Interfaces achieve polymorphism without inheritance.
Interfaces long for inheritance-like features. For example, see Java 8's introduction of default methods, or the boilerplate involved in implemetning certain Haskell typeclasses.