To build an end-to-end reporting solution, I break the problem down into three main challenges. This really applies to tracking all digital channels.
1) Data Capture
How do you actually track that a person came to your website from an ad as well as other meta-data about it?
The method is to use querystring parameters as you stated. You should implement some script that will convert those querystring parameters to cookies as soon as someone lands on your site. Then all your forms can capture those cookie values into hidden fields. Otherwise you will lose your data if someone doesn't convert on the form page.
2) Data Modelling
How do you store that data for reporting purposes?
The simplest method is to store that data in fields on the lead object, but this quickly creates reporting limitations unless you are only tracking first touch.
The better way is to make the lead fields be "Last value" fields, e.g, "Last utm_medium", "Last utm_source" etc.
Then use those field value changes to trigger a smart campaign adding someone to a Marketo program, most often linked to a Salesforce campaign. This is a flexible way to model the multiple interactions a person might have with your marketing channels.
How do you connect your program or campaign data with data in other objects that represents business success (e.g., a lead's movement through the lifecycle, opportunity pipeline or realized revenue) and calculate attribution? This is the end goal and really requires some additional software solution to do properly.
If you have Marketo RCE you can use Marketo's multi-touch functionality. In Salesforce, the native campaign influence reporting is virtually meaningless, so you need a third-party add-on. Bizible, Full Circle Insights, Path to Scale, and Bright Funnel are some main ones. All have differing degrees of functionality and price points. I have worked with several and done demos of others so can offer some frank advice in a PM if you like.
You can also use a data warehouse and a BI tool and build your own logic but it typically requires a skilled BI developer.