Hey Charlie - I realize this is a slightly old question post, but I am just now starting to dig into the details on this for my clients. One thing many of these articles that offer a 'solution' is failing to address is what number to actually put on your local search listing.
I understand DNI and as long as your website has your 'regular' static local number on the homepage, and you use the static number in all of your local SEO efforts - You should not see any penalties. I have many clients that use DNI and do not have an issue, plus I have read that Google can even read the javascript and see the number the DNI is replacing. The DNI is only useful if someone actually clicks past the initial search result to call - So basically, you may still only be getting partial data if someone does not click to your site but just rather calls the number in search results.
What my clients are now asking for, and I am pushing back on , is whether we can use separate call tracking numbers on separate Local SEO mediums. Here is an example -
Google: 800-555-1234
Facebook: 800-555-1235
Bing Places: 800-555-1236
This would still keep the static/owned number on the site - but show us who is calling from where. This would give good data in call tracking reports but from what I know and have researched, kills local SEO success due to NAP inconsistency.