I am creating a basic Alerts feature which has a AlertDataSource template and Alerts folder. As per Helix where should I put this, in the Project or Feature layer?
As you are creating a feature, the AlertDataSource template must reside with your feature. Otherwise your code should not be able to access any data from it (as it is not aware it exists).
Your folder on the other hand is another thing.. if your feature does not need to be aware of the location of the datasource items you could argue that it can reside in the project layer just to organize your data on project level. But you could also decide that the feature requires that your data is organized (maybe for datasource locations or so) and in that case it should be in the feature as well.
In theory you should use interface (base) templates in your feature and derived templates in your project - but that is the theory. For page templates this is absolutely true. For datasource items, I've seen people being practical and not do that (also because not everything in Sitecore can handle base templates that well). But your are right in your comment - in theory you need to have base templates with the fields in your feature and (empty) derived templates in the project layer.