How to require one of many modules in your own module?
One option is to feature detect the modules using function_exists() or class_exists(), and then use some logic to pick the one you want.

You can also wire up a hook_requirements() to hard fail in the $phase == 'install' step or soft fail in the $phase == 'runtime' step.

How you handle the failures really depends on your application.