Partition pruning with multiple date columns
Oracle is unable to do partition pruning when a function is applied to the partitioned column. From the docs:


  There are several cases when the optimizer cannot perform pruning. One
  common reasons is when an operator is used on top of a partitioning
  column. This could be an explicit operator (for example, a function)
  or even an implicit operator introduced by Oracle as part of the
  necessary data type conversion for executing the statement.


Your view has to apply some form of function to start and end dates to figure out if they're the same year or not, so I believe you're out of luck with this approach.

Our solution to a similar problem was to create materialized views over the base table, specifying different partition keys on the materialized views.

We've tailored ours to match common base queries so that we get query rewrite benefits as well. You may need to get users to use the MVs directly to ensure you get the partition pruning working as you need, rather than relying on query rewrite.

(Updated to remove incorrect example and add info regarding applying functions to partition columns)