I don't think you can achieve what you want with your existing data model.
The pivot table allows basically a custom pivoting, you it needs to support also a table layout like
Year 2014 2015 2016 Sales 316110 331760 47005 B. Sales 43860 Margin 227085 237105 35525 B. Margin 0 0 15339,1 Margin% 71,8% 71,5% 75,6%
Here you can't remove the years 2014 and 2015 without also removing the information for Sales.
The only possible solution I could think of would be changing your data model, creating year dimension values that are distinct for budget and sales facts (but potentially still within one field) - distinct means that they hold a different (numeric) value in their dual value representation, but could still show same text value for common years.
Not sure if you want to do something like this just to resolve your pivot display issue.