Thunderforest is a great start for tiles. I'm not aware of a discrete elevation provider, though Graphhopper can be made elevation-aware, I believe. Place search is more difficult (if you're thinking POIs) and it might be worth investigating Foursquare etc.