I am not sure how much of a "problem" this all is - we've had C for
decades, and it seems unlikely that you, me, or anyone else in this
group is smarter than the last 40-odd years worth of programmers,
language designers and systems architects put together.
Without going into details of your points, since that might just start
another long and unproductive thread, I would certainly agree that the
single flat namespace of C is a limitation of the language. Any new
language that aspires to be used for more than small and simple tasks
needs hierarchical namespace handling of some sort - modules,
namespaces, units, interfaces, whatever you want to call it and however
you want to divide it up. And it is definitely important to think
through the balance between flexibility and structure here - there are
significant pros and cons associated with tying interface files and
implementation files together tightly or loosely.