I gave my best effort to create a drawer controller. It's currently merged in the latest development build on GitHub, however, more changes might be made. If you find bugs or errors please report them.
The controller can deposit items in drawers that are adjacent to it. Currently the width and height is set to 8. That means you could put a controller down, place 8 drawers outwards from the 4 sides of the controller and then expand those rows to be 8 drawers tall allowing for 64 drawers on each side. Drawers below the y level of the controller and directly above the controller are not included. If a horizontal row of drawers has a block that isn't a drawer, it doesn't check for any more drawers on that row. The drawers have to be touching each other. If a row starts with a block that isn't a drawer, it doesn't check for any more drawers on that side of the controller.
The controller has 1 inventory slot and will attempt to deposit the entire stack of items in that slot every 7 seconds. If an item couldn't be deposited the controller changes to a jammed state to signify it couldn't deposit the item. You can see the controller state in the upper left of the controller formspec. It also keeps a tally for the number of consecutive attempts that depositing the same item has failed. If the tally reaches 8, the controller switches to a stopped state. When the controller is stopped, it no longer attempt to deposit the jammed item. Items that are only stackable by 1, such as tools, can't be deposited in drawers causing the controller to go in to a stopped state as well. Removing the jammed item or changing the item with a different one will clear the stopped and jammed states and the tally goes back to 0. This is mostly a safety feature to ensure that the controller will not indefinitely keep indexing all of the drawers to find a spot for a jammed item. If there isn't room for an item after 8 attempts at depositing it spread across 7 second intervals, chances are there isn't going to be space until the player either adds more drawers or makes space for the item.
Performance wise, the controller didn't appear to make an impact on CPU usage on my computer. The part that requires the most work is when the controller has to re-index all of the drawers. This occurs due to the item it is attempting to deposit not already existing in a drawer or it does exist but the drawer is full. I expect most people will build a wall of drawers, fill it with items, and continue depositing those same items in to the controller. In that case, the controller doesn't need to re-index the drawers. If the controller is empty (no item to deposit) it does nothing.
The controller can have items deposited in to it from pipeworks. It shouldn't be hard to make it work with other mods, such as hoppers, if you don't use pipeworks. You will need to do that yourself though.