I am currently using both stencil shadows and shadow-mapping.
shadow mapping isn't "that" hard, but may be slightly tricky to get it working right, mostly due to the levels of fussiness involved with getting depth-textures to work, and some of the math involved in the shaders.
stencil shadows have different issues:
the actually good and well-behaved strategy (depth fail) is patented;
the "not so good" strategy (depth pass) isn't very well behaved in-general, but can be hacked on to make it more usable.
another downside of stencil shadows is that its performance is a lot more dependent on the amount of scene geometry which may cast shadows for a given light (the more shadow geometry, the more rendering cost). this is bad for large outdoor scenes, as large amounts of shadows being cast by the sun may quickly become rather expensive.
in contrast, shadow-mapping scales a little better with scene complexity, handling large outdoor scenes with less overall performance impact, but leaves the cost of having and updating the shadow maps, making the light-sources more expensive.
another downside of shadow maps may be due to resolution. for example, it requires using high-resolution textures to avoid pixelated shadows, but high-resolution textures are expensive (eat a lot of VRAM, ...).
a trick here is potentially to have another texture which generates more detail for a space following the camera (so that shadows near the camera are more detailed), though I have not done this in my case.
another general downside of shadow maps is that of potentially having lagging pixelated character shadows (if the update rate is slow and the shadow-map resolution is a little weak).
in my case, I am currently using a compromise:
static light-sources and static world geometry use shadow-maps;
static light-sources and moving objects use stencil shadows;
dynamic light-sources use stencil shadows.
thus far, this seems to be working out ok.
granted, there may still be better ways to handle all of this, and the specifics may change in the future.
granted, for simply blocking light going through walls, it could be possible to implement shadow maps which are rarely updated, and ignore any moving objects.