My question is where should I have the Datasource logic placed?
It looks like you have the right idea. The DataSources is a shared collection, so you could create a base BO that all of your business objects inherit from. In the constructor of the BaseBO, you could then test to see if the connection string(s) have been created:
If Not MicroFour.StrataFrame.Data.DataBasics.DataSources.ContainsKey("") Then
'-- Add your data source to the collection
End If
But it looks as though you were already heading down the right road 