I know there is already a sort of issue open for this, but I thought I would detail a bit more and make it clear. And also add my propositions as well.
I propose that we completely change the project's structure, splitting each supported platform for PDM into its own module.
For example, we could have a module called "platforms", and then have a module for Bukkit, BungeeCord, Sponge, Velocity, Krypton, etc.
I also think that to maintain compatibility with Java 16, we should implement a system very similar to Luck's jar in jar system that he uses for LuckPerms, which allows us to control the loading of the plugin's classes ourselves, and also allows us to make our own URL class loader extension that exposes adding URLs to classpath, to avoid messy and hacky reflection that Java 16 doesn't allow by default.
In addition, I also believe that it the relocation PR is well overdue to be merged into the upstream, and we might be able to integrate that in when we do the rewrite.
I would like to mention as well that anyone is welcome to participate in this, and that I intend to be at the heart of this.
Let me know if I missed anything!