I played with a similar idea of converting a plist to something you can call to access values at
https://kitchingroup.cheme.cmu.edu/blog/2017/04/16/A-callable-plist-data-structure-for-Emacs/. It did end up as a macro, but no eval required. It never made it past that post, but it might have an application here.
I am not sure why you have to loop over everything in a let statement though. you can use something like
https://github.com/nicferrier/emacs-kv to get all the keys an loop over those to do what you want, or you can just use cl-loop to do that. So, unless you are defining new variables for readability you shouldn't need to let bind anything that is in the plist, only new things that are derived from it.
John
-----------------------------------
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803