Можно ли как-нибудь для отдельного участка кода в Common Lisp ограничить видимые переменные и функции, так чтобы ему были доступны только заданные мной?
Да, но это не спасёт от вызова функции из соседнего...
Хотя из вопроса не совсем ясно, что именно человеку надо. Если запретить _совсем_, то стандартной такой фичи я не знаю. Хотя это не значит, что её ещё нету и уж тем более что это не возможно в принципе :)
Я в ru_lisp задавал этот вопрос недавно. Действительно - читаешь код в отдельный package, переопределив readtable и read-eval (подробнее - см. Hyperspec).
Надо исполнить кусок кода, попавший из подозрительных источников, и при этом не допустить, чтобы он сделал какую-нибудь каку. Ну типа как java script выполняется.