I would put consultants and contractors in the same table. Note that the fields you have listed for the tables and the tables to which you will link them are the same. Just add one more field to use to identify a given record as either consultant or contractor.
Agreements seems tailor made to serve as a join table between a project and a consultant or contractor:
Projects::__pkProjectID = Agreements::_fkPRojectID
Contracters|Consultants::__pkConID = Agreements::_fkConID
This allows you to link multiple contractors and consultants to a single project and yet a given contractor or consultant can be linked to many projects.
And if you need to itemize the billing details on your invoices, you should add a related table of Lineitems so that you can build such an itemized list.