If you use corflags
tool to analyze the assemblies, you should see that ILONLY: 0
for System.Data.dll while the others (mscorlib, System) ILONLY: 1
. More information regarding ILONLY can be found at here.
Thus, the assemblies were built differently and you should not expect reflection to work for all. System.Data.dll seems to be a mixed-mode assembly, which is always bitness dependent.
If you cannot run your app as 32 bit so as to load the 32 bit assemblies, you might consider Mono.Cecil as @xmojmr said, as it supports reading mixed-mode assemblies.