Technically it is possible but there are only two variants appearing in my head to make something like that.
1. Best solution would be probably just to have a folder called "Mods" which contains custom packed archives (.dta files). But to make this possible the .exe has to be modified in a way that it reads the whole content of this folder after it did read the last archives, so mod data can overwrite and add new features. If we would have the source code this wouldnt be too hard actually but since this is not the case, the .exe needs to be modified by someone in order to add the mentioned functionality. There are tools to help with this but this will still be very time consuming.
2. It might be less time consuming to make a mod manager. Another custom tool which helps the user handle the mods he wants to be active. Imagine it like a window with two tables. On the left table are the deactivated mods and on the right table the activated mods.
Now what would happen in the background, if the user activates one of the mods, it would start to modify the original archives like Maps.dta, Missions.dta etc. The mod manager would add new content to the orignal archives. Maybe it is even possible that it only writes to the patch.dta. That would make sense if the HD2.exe would read those as last because they are supposed to overwrite data. But those are things which needs to be tested.
Then, when the user unloads a mod via the mod manager, it would remove the content from the archives again. Of course the mod manager would need some extra files to save which data was added etc. but thats not too important for the user.
Variant 1 would be probably prefered because it does not mess with the original .dta archives (but with the .exe!) and instead of dealing with something like a mod manager, the user simply can drop his mods into a specified folder.
In any case, both variants need a good understanding of how the .dta archives are structured. So new files can be added/removed etc. unless you completely rely on the rw_data.dll.