The easyest thing would be to make a shadowbaker
within WED, that accounts for BSP Blocks and (chosen) models,
and also take the lightinformation from the levelligts.

This is enough information to create a shadowmap for the inserted
terrain, and automaticall save this shadowmap as skin
on the terrain (make a copy of it)

This way the shadowed terrain is fast and looks quite good,
and is easy to implement for users.
Just insert a terrain into a level, assign it as shodowterrain and
let a renderfunction create its shadowmap.

There is no need to have a dynamic terrainshadow, If
one still used static BSP Blocks.

Either all dynamic Models and then dynamic shadow with a shader,
or Using Blocks, and having static shadows then for the terrain too.