My tactic was to upgrade my Bag to the max as soon as possible, and I don't spend real $$ on anything else. I am not a 'free' player but I will never spend any $$ again on the game. My philosophy is that app developers and publishers need to be 'rewarded' by paying something for their efforts, esp. when the app is not ad-supported, like Pokemon Go. So early on I spend about $40 on coins, which is the equivalent any other DS-based Pokemon game costs the player. Now, I usually am sitting on ~500 regular pokeballs at all times.
As to Hatching Eggs. I am still kind of angry about aspects of that. When I started playing I got very enthusiastic about walking and excercize, which was new for me and a good trend. I went out and bough a pair of good walking shoes, etc. I also bought a Pebble to use as a tracking device for non-PokeGo walking. I've discovered that the Kilometer measure of the Pokemon Go app is very, very inaccurate. When I track 5km on a good Pebble App, PGo tells me I've roughly walked 3km. The first time I used it, the Pebble App said I had walked almost 5km and I carried a 2km egg that didn't hatch for most of the distance.
Pokemon Go tracks walking distance very poorly, based on GPS coordinates. The GPS is pinged very infrequently and travel distances are calculated by triangulating. So it always rounds down the distance you've walked, especially if you walk in a very corner-defined location with lots of turns. When I discovered this I was very disappointed and quit even paying much attention to the 'distance traveled' part of the App and the egg hatching deal.