Hola!
Creo que la mejor protección que puedes aplicar a una DLL es la virtualización de la misma. Protectores como Themida ó EXEcriptor te pueden ayudar (fijate en las versiones demo de los mismos).
Con el tema del lenguaje, pues, si virtualizas, el lenguaje es casi indiferente (a menos que uses VB). En lo posible, trata de no usar .NET. ASM, C y Delphi serían los candidatos ideales.
Aunque, cabe destacar, que, con tiempo, paciencia y conocimientos, TODAS las protecciones caen. Pero si el proyecto no es muy grande, quizás tengas suerte...
Espero haberte ayudado un poco...
Saludos!