My guess is that if it were really important to make the distinction you might want to use something like
İran vatandaş (citizen of Iran/Iranian citizen)
To specifically indicate that a person is from a particular nation (without ascription of actual nationality), I think you could go with
As for the semantic meaning of "O İranlı," I only have this to offer. When people say "He is American," most of the time, they are referring to his nationality (not his ethnicity) and the majority of the time, it will also mean he was born in America. America is a special case because it is a melting pot of ethnicities, but I think the default meaning of country + (l I) implies citizenship regardless of country.
To illustrate this a bit more, let's use refugees and illegal immigrants as an example. While they may reside in a particular country and even may be actively pursuing citizenship, until they actually become a citizen, they are not referred to as Iranians, Turks, Americans, et alia.