I'll answer as I did find some kind of workaround
Those steps allow me to work DX-style with Managed Package, Namespace and Person Account
1 Create scratch org WITHOUT Namespace, using flag -n, --nonamespace
sfdx force:org:create -f config/project-scratch-def.json -a ScratchNONameSpace -s -n
2 First thing is to pull Account.Business_Account, which works as expected
$ sfdx force:source:status -r
=== Source Status
STATE FULL NAME TYPE PROJECT PATH
Remote Add Account.Business_Account RecordType
$ sfdx force:source:pull
=== Pulled SourceSTATE FULL NAME TYPE PROJECT PATH
Add Account.Business_Account RecordType force-app/main/default/objects/Account/recordTypes/Business_Account.recordType-meta.xml
3 Create scratch org WITH Namespace
sfdx force:org:create -f config/project-scratch-def.json -a ScratchWithNameSpace -s
4 Check status, you'll see conflicts
$ sfdx force:source:status
=== Source Status
STATE FULL NAME TYPE PROJECT PATH
Local Add (Conflict) Account.Business_Account RecordType force-app/main/default/objects/Account/recordTypes/Business_Account.recordType-meta.xml
Remote Changed (Conflict) Account.Business_Account RecordType force-app/main/default/objects/Account/recordTypes/Business_Account.recordType-meta.xml
5 Push your code using flag -f, --forceoverwrite
$ sfdx force:source:push -f
=== Pushed Source
STATE FULL NAME TYPE PROJECT PATH
Add Account.Business_Account RecordType force-app/main/default/objects/Account/recordTypes/Business_Account.recordType-meta.xml
$ sfdx force:source:status
=== Source Status
No results found
After that you would be able to push/pull without issues.
When you enable the org-wide setting in the Dev Hub menu, the only user profile that will have the permission enabled is the default Sys Admin profile. If you use another profile in production, you need to grant the "Create and Update Second-Generation Packages" permission for the profile being used or otherwise add the permission to yourself.
I was stuck myself, but found this article to help:
https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_dev2gp_before.htm
You'll likely also want to give yourself/profile the "Promote a package version to released" permission.
Best Answer
To avoid the error on running
sfdx force:source:pull
run the following query through the tooling API and delete any records it returns (easily done in Dev Console):If you have any workflow metadata which you need to retrieve then use
sfdx force:source:retrieve
to pull these from the scratch org.