The more I think about this, the more I believe that fields are an extra abstraction that is not necessary, now that we are developing entities seriously.
The problem is that what fields do overlap in many ways with what entities do. At least both systems make it easier to store chunks of data and wrap some functionality on how to deal with that data (crud). In my mind the only functionality that Fields bring to the table beyond what entities will do is the fact that fields are chunks of data that get connected to other data. But just because we have created this conceptual difference between entities and fields, any infrastructure created for the one will be useless for the other.
If we unify fields and entities where they overlap, I believe it would make them both better.
So how can we accomplish this? Each field could be their own entity type, and the connections between all these entity types can be managed with something relations-like. (I am talking about the relation contrib module)
I know that there are a lot more things that need to be thought about, but I just want to get some initial reactions to the idea.