After further research and experimentation, I believe that I have found a solution for dynamically configuring data sources when starting WildFly so that they are configured before applications that depend on them are deployed. I created an extension that provides a subsystem that configures the data sources using the data sources subsystem management API in the model stage of adding my subsystem.
This solution seems to be working.
I am still interested in learning more about extensions, and I would appreciate any information or resources on this topic.
I will consider this question answered.