Thanks for your reply Bruno.
It turns out the problem was that the aspnet_regiis.exe process didn't find Spring.Core.dll. I couldn't figure out what path it was using (not PATH or LIBPATH), but by copying Spring.Core.dll to %WinDir%\Microsoft.NET\Framework\v2.0.50727, it worked fine (a bit ugly, I know!).
C:\...\xx>copy bin\Spring.Core.dll %WinDir%\Microsoft.NET\Framework\v2.0.50727
1 file(s) copied.
C:\...\xx>aspnet_regiis -pe "spring/objects" -app "/xx" -prov "DataProtectionConfigurationProvider"
Encrypting configuration section...