Sure it can be fixed, and I would stay away from using empties.
I opened the file and played with it for about 30 seconds and I see the signs of cyclic dependencies. When you move a bone, and cancel the movement, the bones should all return to their previous position. If they don’t, then it’s most likely a cyclic dependency. A cyclic dependency is an error condition where the constraints are conflicting with each other. Example: create 2 bones, add track-to constraints to each bone, targeting the other bone, and you have a cyclic dependency. To check for this, while in pose mode, tab into edit mode and tab back to pose mode, then check the console window for an error message. All these issues can be fixed.
As to rigging with empties, you can have the same problem there as you would with an armature, so you’re not avoiding the problem you have. But you could be creating another problem for yourself.
Animation data (keyframes) are stored at the object level. So if you’re animating objects, like rotating the bucket, rotating the boom, your keyframes are stored in actions for each object. If you are doing anything more than a simple 1 off animation, animating the objects, instead of an armature, will become a nightmare. Trust me on that. I don’t have the time to explain fully, but by using an armature, you have 1 action controlling everything. Were as, doing it with empties and objects, when you want to create a new action, you have to create a new action on every object. Gets tedious…
Anyway, just my 2 cents… A skilled user by the name of ‘clockmender’ will likely see this thread and he’s most helpful, think he even has a couple of tutorials on this…
Randy