I would consider looking into Klipper. That would be a fantastic upgrade and there are plenty of videos on how to go about it. The documentation for the project is also easy to parse.
It was the first major upgrade I did to my Ender 3 that I got back in July. Way too spoiled by it at this point to go back to Marlin.
I swapped to direct drive myself. Went with the Creality Sprite Pro since I already had mounted a CR touch to my print head.I thought it made the most sense for interoperability.