1) A data source with a DataSourceKey of "" is not required, but recommended. It's recommended because "" is the default DataSourceKey for business objects (and the DataSourceKey on the business object tells the business object which connection string to use). So, you don't have ot use "", but if you don't you'll need to change all of the DataSourceKey properties to match throughout your application.
2) You figured this one out 
3) Yes, the manual option allows you to retrieve the connection string any way you want to. You don't have to use the ConnectionManager class at all. In fact, it's probably only recommended to use when have an internal application where your users will know their own connection string. So, just change the SetDataSources() method to add the connections manually and acquire the connection string any way you like. Then, just make sure you don't set any properties or call any methods on the ConnectionManager class (especially the ConnectionManager.SetConnections() method
).
4) Yes, the field must belong to the CurrentDataTable to be able to filter on it. So, if you add an additional column to the CurrentDataTable and populate that column, you'll be able to filter/sort on it. But, if you just have a custom field that does not have a backing column in the CurrentDataTable, you will not be able to sort/filter on it.