What a self promotion and a half... ok, that aside,
Just on the point of clarification - did you check that ARC leads to real performance issues significant for your project (say, the measurable slowdown was 50%) or did you simply postulate that ARC is a show stopper and a no go, even if leads to an insignificant performance degradation? Was that on Intel or ARM?
On your struct + protocol remark: you mean that struct + protocol + protocol inheritance leads to ARC traffic? And you mean nothing fancy like a struct with reference type members? Can you show a short snippet representing this?
I semi pitched the purity grades system some time ago, that would be an ultimate solution for problems like this (the code marked with a certain purity grade would simply not compile if it contains anything impure for that purity grade (realtime unsafe, ARC dependent / etc), or compiler will refrain from using constructs needed to match needed purity grade). Until this implemented self restraining from certain constructs and constant checking resulting ASM seems the only way to go.
I also remember a semi official immortality capability already in the language which might be of help here, will leave this for others to comment.