However writing in nodejs a completely separate deposit, wallet management, and withdraw code for each coin seems overkill. I know bitcoinjs-lib supports litecoin and dogecoin but the documentation is sparse and it seems unreasonably complex. However I keep going back to that as the only solution.
With proper OOP you should be able to forgo a lot of code reuse between coins. All you'd need are an implementation of a coin backend handler interface that communicates to each coin's RPC endpoint. Because many alts based on Bitcoin share the same RPC commands/protocol you would not need much code for each coin; you'd obviously need a separate implementation for Ethereum's (geth or eth) RPC endpoint.