Since you didn't receive any penalties this may be tied to an algorithm change, however that is something pretty tough to prove. If you can check their analytics and see if the drop was inline with any updates listed here http://www.seomoz.org/google-algorithm-change. Above and beyond that here are some more specific answers to some of your questions:
What would be my best recourse to fix the Spam link problem? I would first define what parts of your link profile is related to spam. A great tool to use for this is called LinkDetox and it is only $40 per site that is totally worth it. From there i would suggest disavowing any sites that are flagged as toxic.
**Also in today's Google, what is considered a spam link? **
Some red flags would be any website that is not indexed in Google, has a domain moztrust below 2, and if the content is not focused/randomly generated.
Should I just link to his business name, or to a Keyword like Edmonton Real Estate Agent?
Make it as natural as possible. If you are linking back to a portion of the website about home loan questions, use that as anchor text. Or if it is the contact page perhaps use "contact edmonton real estate". Now-a-days you want to keep the end user in mind almost more so than the search engines.
Is there anything I can do about the expired link pages?
Actually this is a good thing - if it was a spam link and it has expired all the hard work has been done for you in the removal 
Hope this helps - Kyle