I think the second call to save may not be needed and if not its better not to call it. Custom properties are stored in a different table and I think the call to SetProperty does persist it. But a userid is needed and that why you must first save the user (this creates the user id), then you can set the property.
So I would comment out that second call to save and if it works then leave it out.
Best,
Joe