I haven't tested this - but I think the logic will work. I used this logic, but linked my Marketo Program to an SFDC campaign and they have the same 2.0 form for many LPs across the site. I think using a custom field with a program token (unique) may work rather than having to create SFDC campaigns. Use progressions in your Marketo Program to record changes in program status. What's a progression? You might ask.
So, you have a Smart campaign in your Marketo Program to send the email, and add other smart campaigns under the same program (progressions) to track key milestone (delivered, opened, clicked, converted/success). For example: Open email progress is a Smart list is a trigger "opens email", Flow step is change programs status = open. Try using custom field (to report on) and use a change data value step in the flow to update the custom field and use a program token to insert campaign name/date. Completes form progression (fill out form trigger) is your conversion/success for the program. So the "campaign progressions" in your Program should let you create a report in SFDC on who opened, clicked, and you should be able to report via the custom field by the campaign name/date that you set up in the Program token.
LMK if it works for you. Using an SFDC campaign and syncing it to the Marketo program - we could easily report on delivered emails, clicks, opens, form completes and unsubscribes via SFDC reports. We used this mostly for email based campaigns including events and webinars. You may want to set up additional program tags for other program types (events, tradeshows and webinars).