UPは呼ぶたびに内部で頂点バッファ(相当のもの)を作成してんじゃないの?
いちいち毎回作成していないとしても、そこにコピーしてから使うから
結局遅くなるんだよ。

それと頂点バッファを使う場合は、一度に描画する頂点数が4つだけでも
もっと大きいサイズで確保してNOOVERWRITEでLockした方がいい。
NOOVERWRITEでLockすれば、GPUが描画中でもブロックしない。
もちろん上書きしないようにLockするたびに書き込む位置をずらす必要有り。

もっと言えば、ビルボードを1枚ずつ描画するのではなくて、同じテクスチャ
のものはできるだけまとめて一気に描画する方がいい。