Depending on your use cases OpenStreetMap may be suitable. For commercial use you probably need to set up your own servers but that can work to your advantage in that you're better insulated from random price hikes.
I tried OSM yesterday and it couldn't find my friend's house address in the map. Not that it couldn't navigate there - it said the location didn't exist. Google maps finds it right away.
House-level addressing is probably OSM's greatest weak point, principally because house numbers are insanely boring for volunteers to survey. Try entering the street/town name without the number.
I love OpenStreetMap for exactly this reason. For some time, Google gave me directions to an expressway ramp that had me driving around the block until, I suppose, enough people went forward where it told them they had to turn. Because it was across a one way street, and the lane had a that jogged slightly right (wrong way for the one way), it skipped it. But this would have been easy to fix on OSM yourself.
How do I add an address when I don't know where is the place? I can add this friend's address, because I've been to his house before. But what about a new friend?
But more seriously the idea is that if enough people start contributing to the map, there's no reason it can't be as good as Gmaps.
It's already quite good, depending on your area. In some places the government has supplied the data, which is part of the reason some cities or countries are very detailed, while others much less so.