Olá Thiago, tudo bem?
Entendo sua preocupação sobre a implementação do exemplo apresentado no curso. Realmente, em situações reais, é necessário considerar diferentes aspectos e fazer adaptações para que o código seja mais eficiente e atenda às necessidades específicas do projeto.
No caso da cópia de orçamento, sua sugestão de pesquisar o orçamento antigo e adicionar seus itens na lista do orçamento atual é uma abordagem interessante. Isso pode evitar a criação de uma árvore de orçamentos, o que pode tornar o código mais complexo.
No entanto, é importante lembrar que cada projeto tem suas particularidades e nem sempre a solução ideal para um caso será a mesma para outro. Por isso, é importante avaliar cada situação de forma individual e escolher a abordagem que melhor atenda às necessidades do projeto.
Espero ter ajudado e bons estudos!