First of all, a little adjustment; it's not for each 2^(m)-1, it's for each 2^(m)+2.
It gives a value of about N, actually, for extremely big N, it almost becomes N; some 1/3 better than yours. My idea is almost the same as yours though: See below.
Let's say we take N to be 13. First, we look at N when N is 16 (the first power of 2 above N). Using the knock-out system, you get the following scheme (I assume the first one wins, but it works the same if the other block is heavier):
1v2 3v4 5v6 7v8 9v10 11v12 13v14 15v16
1v3 5v7 9v11 13v15
Which makes 1 the heaviest of all. For the second heaviest, we can exclude all blocks that have 2 or more heavier weights. Since every weight, except for 1 has 1 as heavier weight, I will note the other heavier weight between brackets, derivable from the above schedule. This way, 4(3), 6(5), 7(5), 8(7), 10(9), 11(9), 12(11), 13(9), 14(13), 15(13), and 16(15) are excluded, which leaves us with 4 weights in for 2nd place: 2,3,5,9. We already have used 15 weighings, and now we just need to find the heaviest of those. This can be done in 3 turns, which gives us a total of 18 weighings.
If we now want 13 instead of 16, we simply don't look at all weighings involving 14,15 and 16. This leaves us with 3 weighings less, 13v14, 15v16, and 13v15 aren't needed now. So, for 13, we need 15 weighings.
Also to this, there is one little exception, if we have 2^(m)+1, you don't look at the one above, you look at 2^m instead of 2^(m+1). Then, using the last scheme, instead of 2,3,5 and 9, you compare 2,3,5,9 and 17, which takes 4 weighings, giving a total of 19 times.
For every power of 2, let's say 2^m, the amount of weighings you need using this scheme is 2^(m) + m - 2. You need 2^(m) - 1 to find out which is heaviest, then m-1 to find out which is the second heaviest (see also example). If we now write N as 2^(m) - a, 0 <=a<2^(m-1), the amount of weighings needed is 2^(m)+m-2-a, except when it is an exception given above.