Sharepoint - JSOM for anonymous users
One very common workaround I see is that you use an authenticated user to pull the Request that you need, then write it to a document library that allows anonymous access. Because most SP does not accept .json as a file type, just save it as response.txt
Then, in your public site, anonymously read from that document library:
$.ajax({ url: "/documents/response.txt", dataType: "json", method: "GET", cache: false })
This will return you exactly what the rest call to _vti_bin would do. Which allows your existing logic to run.
If you want to, schedule a workflow or powershell to generate the txt file daily so it's up to date.
In such situations, the only viable (i.e. open to evolutions) approach would be to deploy an applicative page (or Web service) in _layouts via a WSP. That is, a WSP with server-side code. That page/Web service would hold all the logic/intelligence/business (with elevation if needed, or as the anonymous user to preserve security, but at least you'll be allowed to do what ever an anonymous user is allowed to do), and your client code would only call it to get everyhting served on a silver platter.
Any other way would be a very short-term fix, with a lot of side-effects/latencies/etc.