Bueno, realmente no sé lo que necesitas y cuan complejo son las búsquedas a realizar. sea como fuere, solo te digo: KISS.
Keep It Simple Stupid

. Es una filosofía de diseño bastante antigua; aunque la tarea a realizar sea compleja, ¡hazlo simple!.
Para lo de refrescar datos, piensa en un método genérico de tu Clase Base "RefrescarDatos" o "ReloadConfig", las clases hijas se encargan de cerrar los datasets y abrirlos de nuevo o de cargar de nuevo la configuración. Al estar en la clase padre, puedes hacer algo como:
Código Delphi
[-]
for i:= 0 to screen.count -1 do
if Screen.Forms[i] is TClaseBase then
begin
TClaseBase(Forms[i]).RefrescarDatos;
TClaseBase(Forms[i]).ReloadConfig;
end;
Saludos