There's actually a way other than NFC and rooting to set an application as a device owner app.
You could use the dpm command line tool from an adb shell.
Usage :
usage: dpm [subcommand] [options]
usage: dpm set-device-owner
usage: dpm set-profile-owner
dpm set-device-owner: Sets the given component as active admin, and its package as device owner.
dpm set-profile-owner: Sets the given component as active admin and profile owner for an existing user.
UPDATE : The dpm utility is really simple actually. Its goal is to create a new file called device_owner.xml under /data/system/device_owner.xml that references the Device/Profile owner apps.
The Android platform is then reading this file to check which application is considered as a Device Owner or Profile Owner App.
On a rooted device, you could indeed create this file by yourself, but since the dpm tool is doing it, you'd better use it (DRY principle) :
For example via a Runtime.exec() command:
Runtime.getRuntime().exec("dpm set-device-owner com.foo.deviceowner/.DeviceAdminRcvr");
Also notice that this tool is working only if no account is set for the user (make sure no account is set in Settings > Accounts) before its use.