Just use World#setBlockState with the original pos(BlockPos), you need not create new instance of blockpos copying that.
Also for giving a player an item, here is a snippet of code from CommandGive:
EntityItem entityitem = entityplayermp.dropPlayerItemWithRandomChoice(itemstack, false);
entityitem.delayBeforeCanPickup = 0;
entityitem.func_145797_a(entityplayermp.getCommandSenderName());