I'm a software engineer new to GIS and mapping systems. Recently I have been playing with ideas for applications built from the Center for Medicare/Medicaid Services 2012 cost dataset. It consists of about ~1.5 million records of American physicians, and their Medicare billing information.
Each physician has an address and I think there are interesting things to be done with mapping this data. However mapping APIs / libraries universally require latitude / longitude values, and I only have street addresses. I've done a fair amount of investigating how to go about bulk geocoding data. Google and Bing maps APIs both are volume limited (even with a business license) to a restrictive level. SmartyStreets seems to do the job, but to get the volume that I require to geocode ~1.5m addresses would cost ~$1000 dollars per month. AddressDoctor looks both complicated and prohibitively expensive.
Are there ways I can do this for free? I'm very unfamiliar with GIS but I understand that at least for the U.S., a lot of the source data comes from the federal government and (I would think) would be free. However bulk processing APIs seem prohibitively expensive for the scale on which I am trying to work.