Apenas criar um:
Money resultado = subtotal;
não necessáriamente resolveria o problema da não alteração dos dados da variável subtotal... Lembrando que subtotal é uma referência a um objeto que está no Heap e o que fizemos com a atribuição dessa aula foi apenas ter duas variáveis apontando para o mesmo objeto no Heap, logo, se o método add() ou subtract() altera resultado ele também altera subtotal (já que ambos apontam para o mesmo objeto).