Reskin as much as possible
The way that worked for me when I was preparing adventures for 3.5 / Pathfinder was to take monster most similar to what I had in mind, and use its stats with any description I needed. Small mechanical changes are far easier to apply cross-version than entire stat blocks.
- If I wanted an Imp, I said it was Imp.
- If I wanted a pack of dire dogs, I said something like "Use stats for Wolf, adjust numbers to make it Very Difficult encounter." For small number of system versions, it may be feasible to precalculate that number.
- For "Storm Fairy" it would be a reskinned Nymph, with Diplomacy swapped for Intimidate - change easy to make independent on system version.
Most of the time, when I wanted a custom monster in adventure, all I needed was custom look, feel and player experience. Custom game mechanics was hardly ever needed - so I refrained from using it. And players never seemed to mind it.
For stats, unbounded accuracy of 3.5, bounded accuracy of 5e, and 18/51-75 strength found in 2e could make the same stat too high in 5e, too low in 3.5, and simply not in line with 2. For saves, 2e has five of them, 3.5e has three, 5e has six. And these are totally different from edition to edition, so to cover all, you have to give all 14 in your stat block.
Sorry, no way around it, if you want to give stat blocks, having one block per edition will take up the same space than cramping all version into one stat block, and will be more readable.