"the origin is usually in some random place, making it awkward to move and rotate the part within a design easily"
I assume that this means that the origin is placed an an inconvenient place relative to the bodies in the component. Although, I would phrase this as: "the bodies are placed an an inconvenient place relative to the component origin"
" If I move the bodies etc, their origins all move too"
Bodies do not have origins. Only components have origins.
In the video below, I show a design with one component, where the geometry (body) of that component is not at the origin for that component. Also, the component itself has been moved from the global origin. So, both bodies and components can be moved. I assume the goal is to get the component origin of Component1 to line up with the geometry of Component1. To do that, I use Move, with type set to Bodies, and relocate the body to be aligned with its component origin. The effect is the same, whether you move the origin to the geometry (which is not possible), or the geometry to the origin. After that, I show moving Component1 (not the body in Component1) to the global origin, just to illustrate component moving.

If this scenario is not what is in your mind, please share a design, and an annotated picture that show what you want to do.
Jeff Strater
Engineering Director