I had to do this in the past and I went the module route.
Using Display Suite, Renderable Elements and Field Group I was able to fully change the layout of edit forms.
Display Suite allows you to take full control over how your content is
displayed using a drag and drop interface. Arrange your nodes, views,
comments, user data etc. the way you want without having to work your
way through dozens of template files. Screencast
Renderable Elements enables you to register any forms and manage the
display through an UI. It will also make (additional) elements
available of existing entities on the manage forms/display screens or
you can for example register the contact form and rearrange the fields
through Field UI. Screencast
Field Group will, as the name implies, group fields together. All
fieldable entities will have the possibility to add groups to wrap
their fields together. Fieldgroup comes with default HTML wrappers
like vertical tabs, horizontal tabs, accordions, fieldsets or div
wrappers.
Edit: Also using Display Suite, you can add different views or blocks directly as fields to your node. So pulling fields from other entities shouldn't be a problem if you are good with views.