I think part of the problem is that almost all software is designed to be usable without training/learning, so almost all task management tools get reduced to lists - which are inefficient.
We need a tool that retrains our brains to generate units of work that, aside from a line of descriptive text, also contain: NPV, value-over-time, hierarchical dependencies, resource allocation, location dependence, etc... ...and then have a simple piece of software prioritize based on calculated optimized order of action.