Yes, I think this is a relatively small change that can work with most tools, including Duplicati.
The change to Duplicati is to add an option to the B2 backend, say --soft-delete, which would then not request that the files are deleted, but rather request that they are hidden. The list command should ignore hidden files (which I think it does already).
After this change, you can follow the same strategy and issue a key without delete permissions, and set up a life-cycle rule that matches your needs.
I have registered an issue to get B2 file hiding supported.