You are correct that modules only work with the major version of FlexSim, such as 21.0 or 21.1. It should work between bug fixes, such as between 21.0.5 and 21.0.6, for example.
It sounds like you're using a .fsl file to add a custom object. If that object is just a configuration of a FlexSim object (different shape, custom pickoptions, etc.) then a .fsl file is probably easiest. Then the .fsl file adds the object.
My guess is that you have a module dll for supplying commands, which your custom object uses. To build a module dll, you will need to compile it for each version of FlexSim, as explained above. Using a module dll compiled for one version will probably not work, or introduce instability, if used in another version. To compile a dll for each major version, you can get the header files and .lib files from the version you compile against as explained here:
https://docs.flexsim.com/en/21.2/Reference/DeveloperAdvancedUser/ModuleSDK/QuickStart/
Since you have a module that must be compiled for each version, you could, in theory, just use the module, and not use the .fsl file. You could add your library as an addition to your module, then remove your .fsl file completely. The object you add to the library would probably just work in newer versions, since you are just adding a node there.
If you want a custom workspace for your module in addition, then you would probably need to upgrade that part of your module from version to version. Usually, that just means opening your module in a new version (assuming the dll has been compiled for that version), create the workspace you want, and save that workspace as the default.
So your steps technically work. I think if you moved to a single module, rather than a .fsl file and a module, then your workflow would be simpler. But it's hard to say without seeing your exact setup. It could be that your solution is the solution you need, given your circumstances.