You can do this without throwing away the native page layouts. Assuming your object is Person__c
:
Override the New
button with a redirector like this to set a sensible default value:
<apex:page
standardController="Person__c"
action="{!URLFOR($Action.Person__c.New, null, ['Name'='Derp'], true)}"
/>
Create a Workflow Rule
that sets the actual intended value (eg from other fields)
This displays a non-empty Name that is overwritten by a workflow rule when saved. It's currently the only way to keep the native page layouts while not requiring the user to enter a non-empty Name.
Note you can default the Name
using Predefined Field Values on a Create Record Publisher Action.
As you noted, you can remove the Name
from Page Layout only if it is an auto-number field.