My problem was at most of my apps were starting at the same exact run level of 20. The problem with that is some should be started before others. For instance, my ZFS needed to load before Vbox, but they were loading at the same time causing Vbox to silently fail. I lowered ZFS to start on 19, and spread out how Vbox starts. They now look like this:
Notice I have vboxdrv set to start before the rest of the Vbox services. It's pretty simple to change the order, just be careful. First you want to remove the service from update-rc.d, then add it back in with the new order. Here is an example.
$sudo update-rc.d -f virtualbox remove
$sudo update-rc.d virtualbox defaults 21
For more info on run levels in Ubuntu this site is what I used.
This is the site that pointed me in the correct direction.
More reference sites: