Olá!
Cara, acredito que essa abordagem é bem interessante, mas como já disseram, os riscos também são grandes. Quanto a indisponibilidade do servidor, um servidor de “reserva” ajudaria - se o servidor não ficar localizado no mesmo espaço físico dos clientes, pois uma queda na rede ou na energia elétrica com o servidor compartilhando a mesma energia / rede não adianta nada server reserva, nem nada, pois os clients também sofreriam independente de serem thin ou não. (pensando bem, queda de rede ou de energia, não tem jeito mesmo aheuehauehau). Um sistema de cache local e enfileiramento de mensagens muuuuito bem implementado resolveria o problema da rede e / ou indisponibilidade do servidor.
Quanto aos perifericos locais, se for uma web app, teria que usar algo como componentes COM (não sei bem disso) se for para Win32, mas deve ser algo realmente chato como o thingol falou anteriormente. Agora se forem pequenas apps java conversando com o servidor por algum protocolo seu, acredito que possa ser implementada pelo menos essa parte de controle de periféricos localmente, distribuída com Java Web Start, ou algo assim.
Em relação a escalabilidade, EJB seria legal pra distribuir suas regras de negócio e fazer balanço de carga (não sei bem se precisa de tudo isso), mas isso se tornaria algo bem complexo.
Se falei besteira, por favor me corrijam.
Abraços