I guess in part it comes down to the information.
Here is a quick example.
I have a user, and I store the very basic information in the users table (name, password, email... those normalized items)
My user additionally also have contact information. This I have created a polymorphic relationship called contactable. (additionally there is a contact type which could be something like primary, or emergency... this will make sense in a few minutes).
So to go with the contactable trait, I have a user able to have several emergency contacts, as well the ability to track their previous addresses.
Additionally I have avatars, which i tend to store in their own table
I have found that a modular approach (properly balanced, no 1-2 field tables) helps. That way, I am pulling less data when I need less data. You can control some of this with ->get(['column','names']) but this tends to be hard to do on releations.
For your structure, if it makes sense, I might break down those sections into tables. IT could help.