Em geral, não há problema algum em abrir e fechar vários cursores sequencialmente. Você pode pensar no cursor como basicamente um ponteiro para um conjunto de resultados de consulta (e é um conjunto de ponteiros para dados armazenados em cache). Abrir um cursor aloca um ponteiro e fechar um libera a memória.
Em geral, acho que a limpeza lógica é melhor aqui, portanto, ter um cursor por consulta é o caminho a seguir.