Это на самом деле фундаментальная проблема, она в erlang решается передачей байткода и есть похожие решения для JVM, но там есть много ограничений. Я бы сказал, что в общем виде эту задачу решать не стоит, но для частных случаев вполне можно. У меня сейчас в экспериментальной фазе вариант с удаленным вызовом математических функций.