There are a couple of different options available, but you will need create some mandatory fields in SFDC and also ask you team imputing contacts to change the way they work. Hopefully the below is helpful:
1) Managing contacts can be done by creating mandatory fields in SFDC that match the lead creation rules. Therefore any contacts added directly into SFDC will have the same fields needed to sync to Marketo and then back in SFDC.
2) Duplicate leads have a couple of different options you could use a tool called DupeCatcher which is a plug in for Salesforce or you will have to ask your team to check your database before they add a new contact.
What you really want to do in Question 1 is build workflows in Marketo to catch SFDC Contacts, check for missing fields, and then stamp them. Yes, you can build Validation Rules or Required fields in SFDC as well. Just go through your Notifications tab to see a list of some of the issues.
You could make leads source a required field on contact creation or set a default value at a minimum.
Also, regarding the duplicate records issue, I always am reminding my sales team to check for existing records before simply creating a new contact. Additionally, SFDC should flag a record as a possible duplicate on creation. So really a reminder to the sales team to not create duplicates and pay attention to notifications is really the best way to combat the duplicates being created issue.