You should remove the [Queryable] attribute.
According to http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options#ODataQueryOptions, you should use either Queryable or manually manipulate the ODataQueryOptions. The web API populates the ODataQueryOptions from the URI query string, after which you could (presumably) alter those options.
Further down the page, they implement something that looks really close to a solution for your problem. They implement a custom MyQueryable attribute which enforces a custom order-by validator. You may not be able to alter the query during validation, but you may be able to override the attribute's implementation of ApplyQuery to inject your required order-by clause.