Testing for a block in a certain radius
Rather than testing for air blocks, why not use the inGround datatag for this:
First create a scoreboard:
/scoreboard objectives add arrow dummy
Then, run these 2 commands on a fast clock:
/scoreboard players add @e[type=Arrow] arrow 1 {inGround:true}
/execute @e[score_arrow_min=1] ~ ~ ~ summon Creeper ~ ~ ~ {Fuse:1,ignited:1,ActiveEffects:[{Id:14,Amplifier:1,Duration:999999}],powered:true}
Happy exploding :)