I had a thought today that might work. Whilst learning C#, I learned how to search a blocktable for a value, and if not there, insert it. What if, (bear with me, as this is not the ideal choice by any means), we had a drawing that contained all our blocks, which we insert into the current dwg, and erase, thus defining all the blocks. Then we can insert blocks via VBA and the ones that are annotative behave properly. When we go to insert a block, check the blocktable for our "master" block. If it has been purged, reinsert it to redefine our missing blocks, and move on to the block we want.