Realmente carregar dll no applet eh um tiro no pe. acredito que a sugestao de usar o Java Web Start seja a melhor saida.
Na verdade o que ocorre eh o seguinte. Quando voce esta navegando , e voce utiliza mais de um applet, a mesma JVM eh utilizada para todos os applets (com outro classloader, para garantir o isolamento), ate para ficar mais rapido e consumir menos memoria. O caso do reload da pagina, infelizmente , eh considerado como um novo applet.
Acontece que seu applet abre uma dll. Ao dar o reload o segundo classloader vai tentar abrir a dll novamente (e nao ha como fazer consulta entre classloaders, para saber se ja foi carregada, sorry).
Carregar duas vezes a dll, para o java, creio que nao seria problematico. Bem, ai eu acredito que ja seja um limitacao do proprio windows. Talvez o windows nao permita que um processo carregue a dll mais de uma vez, teria tipo que descarregar antes de carregar de novo. Talvez em outro so, tipo o linux, poderiamos carregar a mesma Shared Library mais de uma vez. Nao sei bem ao certo se isso seria possivel. Mas o que interessa eh que o problema eh o fato das duas applet (ou a applet depois do reload) tentar carregar novamente a dll
Usando o java web start voce nao vai ter esse problema, primeiro porque voce nao sofrera da acao do reload , afinal, ele eh soh disparado de uma pagina. Segundo porque mesmo que voce dispare mais de uma vez, serao aplicacoes diferentes, JVM diferentes, que podem , independentemente carregar a dll, ja que nao sao o mesmo processo.