Yeah, that would work.
Public addresses are only really needed so that the entire network can discover the nodes on the rest of it. If you're only interested in connecting to a subset of nodes, or not interested in the global network at all, you don't really need a protocol like IP. Something like what you're talking about would be cool.
Think about what a protocol is fundamentally: a piece of information known to pertinent parties that enables them to interact in ways defined by the protocol. It's just a set of rules we both know so that we know how to find each other, how to understand each other, how to interpret each others behavior, etc. A handshake, a language, names, interaction can't really exist without protocols, and interaction is defined by protocols. So a protocol has to be thought out for it's uses, what you're describing is a fantastic idea, but it can't replace TCP/IP, primarily because of discovery, nodes must be known to each other already, who someone is is part of the protocol, not part of the information being communicated.