I advise everyone to focus locally first, its easy to rank at the top very fast locally. So you shouldn't have a issue in that department with 20,000 people. What baffles me is that you Say you want to Ranks for "YOURTOWN Restaurant." like "Athens GA restaurant" and then you later say it isn't a business that is in Google local. If it is a restaurant, you can list it in Google local. You can list any business in Google local, the trick is to disable the "find my location" area when you are creating the directory listing. That way the address isn't listed, yet the name of the business pops up in the local directory i.e. Google local Restaurants in Athens GA. So, yes, you can list any business, and just set the address as private.
I personally wouldn't pay anyone online for backlinks. Or use any auto-generating program. The web is full of nightmare stories about being sandboxed by google for using a program or some shady company and they got spam backlinks that caused google to delist their website.
The easiest way to beat local competition is to use AHREFS.com to run a querry on your competitions websites. Monitorbacklinks.com also will keep tabs on your competitors backlinks. I use these to see where my competitors that are ranking well are setting up their links.
If you have a marketing budget, set up a small Adwords campaign for specific Keywords only!! and pay for the "MYTOWN restaurant" searches. If you are in America, I would add the area code too. Like "restaurants in 727".... Set Negative keywords too. That way people are clicking the keywords you want associated with the search words YOU picked.
Use Google keyword planner in Adwords with your Google acct. I use the keyword planner to see how many words are typed and what searches are run. From that point I design keywords I put on the internet myself.